原子属性和非原子属性有什么区别?做什么atomic和nonatomic财产申报中的意思?@property(nonatomic, retain) UITextField *userName;@property(atomic, retain) UITextField *userName;@property(retain) UITextField *userName;这三者在运作上有何分别?
3 回答
慕斯王
TA贡献1864条经验 获得超2个赞
//@property(nonatomic, retain) UITextField *userName;//Generates roughly- (UITextField *) userName { return userName;}- (void) setUserName:(UITextField *)userName_ { [userName_ retain]; [userName release]; userName = userName_;}
//@property(retain) UITextField *userName;//Generates roughly- (UITextField *) userName { UITextField *retval = nil; @synchronized(self) { retval = [[userName retain] autorelease]; } return retval;}- (void) setUserName:(UITextField *)userName_ { @synchronized(self) { [userName_ retain]; [userName release]; userName = userName_; }}
眼眸繁星
TA贡献1873条经验 获得超9个赞
原子
是默认行为。 将确保当前进程在另一个进程访问变量之前由cpu完成。 不是快速的,因为它确保了整个过程的完成。
非原子
不是默认行为。 更快(用于合成代码,也就是使用@Property和@合成创建的变量) 非线程安全 当两个不同的进程同时访问同一个变量时,可能会导致意外行为。
- 3 回答
- 0 关注
- 860 浏览
添加回答
举报
0/150
提交
取消