我只声明一个变量(即NSString)为@property和@synthesize,我从未在接口类中声明它,例如下面的例子:
.h文件:
@interface myViewController : UIViewController {
}
@property (nonatomic,retain) NSString *text;
它对我很好,所以我应该在myViewController类中声明它吗?为什么?
P.S。 ARC已启用。
答案 0 :(得分:0)
没有具体原因来声明变量而不是属性(声明两者都没用)。
我倾向于像你一样声明属性,因为我声称不好的做法直接在实现中操作实例变量(很少有例如init
方法),我喜欢使用getter和setter。
此外,属性具有可在行为方面轻松定制的巨大优势:处理线程安全性,可见性和内存管理只是几个关键字的问题。
答案 1 :(得分:0)
你的意思是在.m文件的接口部分?
在UIViewController的.m文件的接口部分声明的属性仅供私人使用,您无法从其他类访问它,而.h文件的接口部分中声明的属性是类属性,可以访问该课程。
答案 2 :(得分:0)
很久以前,你应该这样做:
@interface myViewController : UIViewController {
NSString *_text;
}
@property (nonatomic,retain) NSString *text;
@synthesize text = _text;
但现在,您可以代替它:
@interface myViewController : UIViewController {
}
@property (nonatomic,retain) NSString *text;
同样,IDE会为您完成,并且Xcode4.5也为您提供@synthesize属性。没有人可以告诉你应该采用哪种方式,但可以清楚你想用你的代码做什么,然后用它做任何事情。