我是一名Objective-C的初学者,之前使用的是Swift。现在看来好像有两种不同的@interface
实例可以用来声明我的实例变量。一个在我的头文件中,例如下面这样:
// Header file
@interface ViewController : UIViewController
{
// declare instance variables
}
@end
另外,我可以在我的实现文件中添加一个类似于这样的内容:
// Implementation file
@interface ViewController ()
// declare instance variables
@end
@implementation ViewController
@end
编辑:我曾经学习过“旧的方法”,这让我在.h文件中声明私有变量。我的困惑来自于看到旧方法(在.h文件中)和新方法(在.m文件中)都声明了私有变量。目前为止,我已经学到了以下内容:
// .h
@interface SomeClass : UIViewController
@property (nonatomic, assign) BOOL someBool;
// declare other properties, which will all be public
@end
// .m
@interface SomeClass () <UITextFieldDelegate>
// what do I declare here?...
@end
@implementation SomeClass {
// ...and what do I declare here?
}
// method implementations
@end
然而,我仍然不清楚我的.m文件中的@interface和@implementation花括号之间的区别。 @matt说永远不要使用花括号,但是@rmaddy在这里的答案表明@implementation SomeClass {}
是可以的。那么,究竟哪个是正确的呢?
.m
文件中的@implementation
的{ }
中,就像您更新问题中链接的重复问题的已接受答案和我的答案所讨论的那样。 - rmaddy@interface()
(也称为类扩展)在.m文件中应该用于私有属性和私有协议。@implementation{}
块应该用于私有实例变量。 - rmaddy