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