我在int,BOOL等上看到了与非原子,assign相同的readwrite。
我对此感到困惑。我知道在非本机对象上,我们通常做非原子的,保留。
答案 0 :(得分:31)
这是简短的回答:
atomic
vs nonatomic
主要确保从合成的getter返回完整的值,并且完整的值由合成的setter写入(原子是默认的。)
readwrite
vs readonly
确定合成属性是否具有合成访问者(readwrite具有setter并且是默认值,readonly不是)。
assign
vs retain
vs copy
确定合成访问者如何与Objective-C内存管理方案交互:
assign
是默认值,只是执行变量赋值retain
指定应在发送时发送新值-retain并发送旧值-release
copy
指定应在发送时发送新值-copy并发送旧值-release
。答案 1 :(得分:17)
在阅读了如此多的文章,SO帖子和制作演示应用以检查变量属性属性后,我决定将所有属性信息放在一起
以下是详细的文章链接,您可以在其中找到上述所有属性,这些属性将极力帮助您。 非常感谢所有在这里给出最佳答案的人!!
示例:
@property (nonatomic, retain) NSString *name;
@synthesize name;
示例:
@property (nonatomic, assign) NSString *address;
@synthesize address;
<强>只读强>
示例:
@property (nonatomic, readonly) NSString *name;
@synthesize name;
示例:
@property (nonatomic, readwrite) NSString *name;
@synthesize name;
答案 2 :(得分:15)
readwrite
表示存在getter和setter;相反的是readonly
。通常情况下,您明确声明属性readwrite
的唯一时间是在公共接口声明属性readonly
的类的类扩展中 - 因此它是公开只读的,但在内部您可以同时得到并设定。