小编典典

@property 在 Objective-C 中保留、分配、复制、非原子

all

作为 Objective-C 的新手,谁能给我一个关于保留、分配、复制和我缺少的任何其他遵循 @property
指令的概述?他们在做什么,为什么我要使用一个而不是另一个?


阅读 65

收藏
2022-06-10

共1个答案

小编典典

MrMage 链接的文章不再有效。所以,这是我在 Objective-C 中(非常)短时间编码中学到的:

非原子与原子 - “原子”是默认值。始终使用“非原子”。我不知道为什么,但我读的书说“很少有理由”使用“原子”。(顺便说一句:我读的书是 BNR“iOS
编程”书。)

readwrite vs. readonly - “readwrite”是默认值。当您@synthesize 时,将为您创建一个 getter 和一个
setter。如果您使用“只读”,则不会创建任何设置器。将它用于在对象实例化后您不想更改的值。

保留 vs. 复制 vs. 分配

  • “分配”是默认值。在@synthesize 创建的setter 中,值将简单地分配给属性。我的理解是“分配”应该用于非指针属性。
  • 当属性是指向对象的指针时,需要“保留”。@synthesize 生成的 setter 将保留(也就是添加保留计数)对象。完成后,您将需要释放该对象。
  • 当对象是可变的时,需要“复制”。如果您现在需要对象的值,并且您不希望该值反映对象的其他所有者所做的任何更改,请使用此选项。完成后您将需要释放该对象,因为您保留了副本。
2022-06-10