原子屬性和非原子屬性有什么區別?做什么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 關注
- 882 瀏覽
添加回答
舉報
0/150
提交
取消