-1

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

.h 文件:

@interface myViewController : UIViewController {
}

@property (nonatomic,retain) NSString *text;

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

PS ARC 已启用。

4

3 回答 3

0

声明变量而不是属性没有具体原因(声明两者都是无用的)。

我倾向于像你一样只声明属性,因为我认为直接在实现中操作实例变量的坏习惯(像init方法这样的罕见例外)并且我喜欢使用 getter 和 setter。

此外,属性具有在行为方面易于定制的巨大优势:处理线程安全、可见性和内存管理只是几个关键字的问题。

于 2013-03-29T07:44:56.820 回答
0

你的意思是在 .m 文件的接口部分?

UIViewController .m 文件的 interface 部分声明的属性仅供私人使用,您不能从其他类访问它,而 .h 文件的 interface 部分中声明的属性是类属性,可以从类中访问.

于 2013-03-29T07:48:40.190 回答
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 属性也为你做。没有人可以告诉您应该采用哪种方式,但可以清楚地知道您想对您的代码做什么,然后用它做任何事情。

于 2013-03-29T08:36:10.943 回答