我从 Objective-C
开始我的冒险和 iOS
而且我有一件事我不知道如何正确使用,这简直让我大吃一惊。
许多教程在 .m
中有私有(private)类变量。文件定义如下:
@interface ViewController (){
@property (nonatomic, strong) NSMutableArray *myArray;
}
或像这样:
@implementation ViewController
NSMutableArray *myArray;
@end
在第一个示例中,我可以使用
_myArray
而不是 self.myArray
,我喜欢,但我应该把我所有的私有(private)变量放在接口(interface)文件中吗?这两个变量有什么区别?我什么时候应该使用一个而不是另一个,哪个更安全?
最佳答案
不同之处在于:
_myArray
是实例变量。 self.myArray
在您的对象上调用 getter 方法。 self.myArray = nil
使变量通过其 setter ,因此当 ARC 为 时释放对象不是 用过的)。atomic
(默认值),这意味着访问变量是线程安全的,性能成本nonatomic
property 意味着当从多个线程访问变量或属性时可能会发生竞争条件。 一般来说,使用
atomic
用于与多个线程共享的对象和 nonatomic
对于 UI 或非共享对象。
关于ios - 接口(interface) Object() {} 和 @implementation Object @end 中的变量之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25054336/