声明实例变量的最佳方法

时间:2013-03-29 07:34:58

标签: objective-c variables properties nsstring synthesize

我只声明一个变量(即NSString)为@property和@synthesize,我从未在接口类中声明它,例如下面的例子:

.h文件:

@interface myViewController : UIViewController {
}

@property (nonatomic,retain) NSString *text;

它对我很好,所以我应该在myViewController类中声明它吗?为什么?

P.S。 ARC已启用。

3 个答案:

答案 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属性。没有人可以告诉你应该采用哪种方式,但可以清楚你想用你的代码做什么,然后用它做任何事情。