gpt4 book ai didi

ios - 自动引用计数和综合属性

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:13:49 24 4
gpt4 key购买 nike

使用ARC for iOS时,有以下区别吗?

@property (strong, nonatomic) NSObject *someProperty;
...
@synthesize someProperty;

//and then in the init method, either:
self.someProperty = aProperty;

//or
someProperty = aProperty;

我知道如果没有 ARC,self.someProperty 实际上是在调用合成的 setter 方法,该方法向对象发送 retain 消息。但是现在有了 ARC,如果我使用点符号来设置这样的属性有什么关系吗?

更一般地说,ARC 真的意味着我根本不必担心引用计数吗?或者在某些情况下,我编写代码的方式可能会导致 ARC 出错?

最佳答案

区别与没有 ARC 的情况相同:通过使用点符号,您调用合成的 setter,通过直接分配给 ivar,您将绕过 setter 方法。

在 ARC 下,这两个选项在内存管理上没有区别,但你仍然应该在这两个选项之间做出有意识的决定:例如,直接分配给 ivar 绕过 KVO,而通过 setter 方法稍微慢一些但在大多数情况下可能更安全,例如当您稍后决定使属性成为 atomic 或覆盖 setter 时。

就我个人而言,我总是会使用属性符号 self.abc = ...; 除了可能在 init 中通常需要绕过 KVO 之外。简而言之,使用您在 ARC 之前使用的相同推理。

关于ios - 自动引用计数和综合属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8475075/

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