【发布时间】:2016-02-04 10:46:13
【问题描述】:
在多次搜索和阅读属性属性后,我仍然无法完全理解它们并产生正确使用它们的反射。
我有多个问题:
1) default 属性是什么意思?
据我了解,没有在“组”中指定属性,而是使用默认属性,因此:
@property NSString *string;
是atomic,对吧?
按照这个逻辑,this article 表示 strong 和 assign 是默认值,所以如果我有:
@property (nonatomic) NSString *string;
是string 属性strong 还是assign?
可用属性如何“分组”?或者正如 Xcode 所说,什么属性是互斥的?
2) 是否有任何应该遵循的通用规则?
例如,我看到一条评论说您应该将copy 用于具有可变变体的类,例如NSString、NSArray。
还有一个说你应该对 C 对象使用assign。
那么,总是使用:
@property (copy, nonatomic) NSString *string;
@property (assign, nonatomic) CGFloat float;
?
对于属性属性还有哪些其他标准做法?
3) 如果我使用“错误”的属性会出现什么问题?如果我只对项目中的所有属性使用nonatomic 会怎样?
【问题讨论】: