OC在定義屬性時有nonatomic和atomic兩種選擇
atomic:原子屬性,為setter方法加鎖(默認就是atomic)
nonatomic:非原子屬性紊婉,不會為setter方法加鎖
atomic加鎖原理
@property (assign, atomic) int age;
- (void)setAge:(int)age
{
@synchronized(self) {
_age = age;
}
}
原子和非原子屬性的選擇
nonatomic和atomic對比
atomic:線程安全药版,需要消耗大量的資源
nonatomic:非線程安全,適合內(nèi)存小的移動設(shè)備
iOS開發(fā)的建議
所有屬性都聲明為nonatomic
盡量避免多線程搶奪同一塊資源
盡量將加鎖喻犁、資源搶奪的業(yè)務(wù)邏輯交給服務(wù)器端處理槽片,減小移動客戶端的壓力