我们是否应该将我们希望保留的所有实例变量转换为私有(private)属性,还是我遗漏了一些明显的东西?
@interface SomethingElse : Something {
NSMutableArray *someArray;
}
在此示例中,someArray 在使用 [NSMutableArray initWithObject:someObject] 的方法中初始化但未保留。
我的特殊情况是我正在更新游戏,有很多实例变量,所以为了 sdk 的 future 版本,我想确保我做的是正确的。
最佳答案
Are we supposed to convert all of the local variables we wish to retain to private properties or am I missing something obvious?
首先,您在示例中显示的变量是实例变量,而不是局部变量。局部变量在代码块内声明(例如,在函数或方法内,或在某些子 block 内,例如条件语句的主体),并且其生命周期仅限于声明它们的 block 的执行.实例变量在类中声明;该类的每个 实例 都有自己的该类声明的实例变量的副本。
其次,不,您不需要将所有实例变量都转换为属性。 Instance variables are treated as strong references by default under ARC.属性实际上只是一个 promise ,即类提供具有特定语义的特定访问器。仅仅拥有一个实例变量并不意味着您必须为该 ivar 提供访问器。 (有些人可能会说您应该,但您不必这样做。)
关于Objective-C ARC 和实例变量 iOS SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11314775/