如果assign
是设置者,但属性为readonly
,那么它将不会进行任何设置,那么为什么要使用assign
?
我从Apple docs on class extensions. In this page,得到这个我得到为什么你想要一个公共的readonly属性,然后私下读写,但为什么不省略公共assign
@interface
并且只将它包含在类扩展中?
答案 0 :(得分:2)
如果多次声明@property
(通常是因为您在头文件中声明了公共readonly
属性,并且在.m中的匿名类别中声明了readwrite
属性,内存管理方案必须匹配。
所以如果你的.m中有这个:
@property (assign, readwrite) NSObject *foo;
然后您需要在标题中添加此内容,assign
是强制性的:
@property (assign, readonly) NSObject *foo;
答案 1 :(得分:0)
如果只留下(nonatomic)
,编译器会自动将第二个参数设置为assign
。