为什么必须@interface
像这样在括号内声明变量?
@interface myClass : UIViewController {
NSString *myString;
IBOutlet UILabel *myLabel;
}
为什么不在这里做呢?
@interface myClass : UIViewController {
IBOutlet UILabel *myLabel;
}
NSString *myString;
为什么必须@interface
像这样在括号内声明变量?
@interface myClass : UIViewController {
NSString *myString;
IBOutlet UILabel *myLabel;
}
为什么不在这里做呢?
@interface myClass : UIViewController {
IBOutlet UILabel *myLabel;
}
NSString *myString;
因为如果你不这样做,那么该变量将是一个文件范围变量(具有静态存储持续时间),它不会是你的类的实例变量。
因为第一种形式是声明实例变量的正确 Objective-C 语法。第二种形式没有定义实例变量,它定义了一个全局变量。如果您想定义一个全局,请在@interface
块之前定义它,这样它就不会成为类定义的一部分。
花括号外面是方法和属性声明的地方。
但更好的是,私有 ivars 应该在 .m 文件中声明,而不是在 .h 文件中。
@implementation myClass {
// private ivars here
}
我认为这并不适用IBOutlet
。我认为他们需要在 .h 文件中。但我不使用IB,所以我不确定。
我们应该这样做的方式如下:
@interface MyClass : UIViewController {
}
@property (strong, nonatomic) NSString *myString;
@property (weak, nonatomic) IBOutlet UILabel *myLabel;
@end
只需遵循约定,不要使开发人员的生活复杂化;)