为什么要给一个属性readonly和assign?

时间:2012-03-01 11:58:51

标签: objective-c

如果assign是设置者,但属性为readonly,那么它将不会进行任何设置,那么为什么要使用assign

我从Apple docs on class extensions. In this page,得到这个我得到为什么你想要一个公共的readonly属性,然后私下读写,但为什么不省略公共assign @interface并且只将它包含在类扩展中?

2 个答案:

答案 0 :(得分:2)

如果多次声明@property(通常是因为您在头文件中声明了公共readonly属性,并且在.m中的匿名类别中声明了readwrite属性,内存管理方案必须匹配。

所以如果你的.m中有这个:

@property (assign, readwrite) NSObject *foo;

然后您需要在标题中添加此内容,assign是强制性的:

@property (assign, readonly) NSObject *foo;

答案 1 :(得分:0)

如果只留下(nonatomic),编译器会自动将第二个参数设置为assign