如何在Objective-C中使用属性?

kir*_*mar 7 iphone properties object objective-c retain

什么时候应该使用nonatomic,retain,readonlyreadwrite在Objective-C的属性?

例如:

@property(nonatomic, retain) NSObject *myObject;
Run Code Online (Sandbox Code Playgroud)

如果我使用nonatomicretain,这是否意味着该对象将被保留?

小智 10

首先,我想将David Gelhar的评论推广到一个完整的答案.修饰符atomicnonatomic什么都没有做线程安全.有关空间的更多详细信息,请参阅此问题.

您列出的其他项目可以相对简单地解决.如果你想要更多,我会简要地点击它们并指向你关于属性修饰符的文档.

atomicvs nonatomic主要确保从合成的getter返回完整的值,并且完整的值由合成的setter写入.

readwritevs readonly确定合成属性是否具有合成访问readwrite器(具有setter并且是默认值,readonly不是).

assignvs retainvs copy确定合成访问器如何与Objective-C内存管理方案交互.assign是默认值,只是执行变量赋值.retain指定应-retain在赋值时发送的新值以及发送的旧值-release.copy指定应-copy在赋值时发送的新值以及发送的旧值-release.