0

一种针对iOS应用启用ARC,如果我想要一个类有一个私有值/对象,它应该是更好的声明如下:私人性质VS在ARC实例变量

// .m file 
@interface MyClass() 
@property (strong, nonatomic) NSString *name; 
@end 

或本?:

@implementation MyClass 
{ 
    NSString *name; 
} 

我应该有什么内存管理方面的考虑?

谢谢!

+0

提到这个问题:http://stackoverflow.com/questions/5615695/best-way-of-declaring-private-variables-in-cocoa?rq=1 –

+0

@MarkoNikolovski你提到的问题是真的过时了。自2011年以来发生了很大变化。是否有更好的重复问题在2014年Objective-C中解释了这一点? –

回答

0

您可以使用任一种方法。在第一种情况下,你宣布一个私人财产 - 这有一些好处。例如,你可以在别处公开那个私有接口(例如:在一个单元测试中)并访问你的一些类的内部。另外作为一个属性,你可以控制指针是弱还是强。在第二种情况下,您正在为您的类声明一个ivar(实例变量),它只能从您的类的方法中访问。

0

您应该始终使用属性。我知道用ARC使用ivar似乎等于使用​​一个属性,但它不是!
属性有很多选项,其中一个非常重要的是原子/非原子。引用另一answer上堆栈:

随着“原子”,将合成的设定器/吸气剂将确保整个 值总是从吸气退回或设置由设定器, 无论设定器活动对任何其他线程。也就是说,如果线程 A是在吸气的中间,而线程B调用的二传手,一个 实际可行的价值 - 一个自动释放的对象,最有可能的 - 将 在A.返回给调用者

其他真正重要的是copy如果复制的对象,你可以肯定的(几乎)该对象并没有从你过去的时间而改变。

我爱性质还因为它们是方法,你可以重写他们。有时当我编写GUI元素时,我喜欢只公开一个像“text”这样的属性。使用重写设置器,您可以将“文本”直接传递到它应该显示的标签或文本字段。
Propeties给你很多好处,自Xcode的更新版本伊瓦尔自动创建。