这是一个由两部分组成的问题,希望我能理解更多关于该主题的信息。
1) 在我看来,您有两个流行选项来为objective c< 中的类声明属性
。一种是将属性添加到 header 的类主体中,例如。
@interface MyClass : NSObject {
NSArray *myArray;
}
或者您可以将它添加到@interface
主体之后和@end
语句之前像这样。
@interface MyClass : NSObject {
//
}
@property (nonatomic, retain) NSArray *myArray;
这两种“风格”之间有什么区别?您什么时候选择其中一种?
2) 在 @property
之后,您可以找到诸如 (nonatomic, retain)
之类的选项。这些选项的用途是什么?为什么/何时您使用不同的选项?
最佳答案
以下是 Xcode 识别的唯一属性修饰符:
nonatomic
(不对属性强制执行线程安全,主要用于在整个程序中只使用一个线程的情况)atomic
(对属性强制执行线程安全,主要用于在整个程序中使用多个线程的情况)(默认)retain
/strong
(自动保留/释放集合上的值,确保值不会意外释放)(如果是 ARC 和对象类型则默认)只读
(无法设置属性)readwrite
(可以设置和获取属性)(默认)assign
/unsafe_unretained
(没有内存管理应该用这个属性完成,它由赋值的人手动处理)(如果不是ARC或对象类型则默认)copy
(在设置对象之前复制对象,以防由于外部因素(字符串、数组等)而设置的值不能更改。weak
(如果对象被释放,自动清零引用,并且不保留传入的值)getter=method
(设置用于获取此属性值的选择器)setter= method
(设置用于设置该属性值的选择器)
关于iOS 属性声明说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162926/