原子属性和非原子属性有什么区别?做什么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 关注
- 946 浏览
添加回答
举报
0/150
提交
取消
