gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:15:03 28 4
gpt4 key购买 nike

作为Objective-C的新手,有人可以给我一个关于保留、分配、复制以及我遗漏的任何其他内容的概述,遵循@property指令吗?他们在做什么,为什么我要使用一个而不是另一个?

最佳答案

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

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

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

保留与复制与分配

  • “分配”是默认值。在由@synthesize 创建的 setter 中,值将简单地分配给属性。我的理解是“assign”应该用于非指针属性。
  • 当属性是指向对象的指针时,需要“保留”。 @synthesize 生成的 setter 将保留(也就是添加保留计数)对象。完成后,您需要释放该对象。
  • 当对象可变时需要“复制”。如果您需要对象的当前值,并且您不希望该值反射(reflect)对象的其他所有者所做的任何更改,请使用此选项。完成后您需要释放对象,因为您保留了副本。
  • 关于ios - @property 在 Objective-C 中保留、分配、复制、非原子性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2255861/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com