記錄 property的一些常用設定

2021-06-06 00:29:44 字數 869 閱讀 9643

推薦做法是nsstring用copy,delegate用assign(且一定要用assign,不要問為什麼,只管去用就是了,以後你會明白的),非objc資料型別,比如int,float等基本資料型別用assign(預設就是assign),而其它objc型別,比如nsarray,nsdate用retain。

atomic和nonatomic的作用與區別:

如果你用@synthesize去讓編譯器生成**,那麼atomic和nonatomic生成的**是不一樣的。如果使用atomic,如其名,它會保證每次getter和setter的操作都會正確的執行完畢,而不用擔心其它執行緒在你get的時候set,可以說保證了某種程度上的執行緒安全。但是,我上網查了資料,僅僅靠atomic來保證執行緒安全是很天真的。要寫出執行緒安全的**,還需要有同步和互斥機制。

而nonatomic就沒有類似的「執行緒安全」(我這裡加引號是指某種程度的執行緒安全)保證了。因此,很明顯,nonatomic比atomic速度要快。這也是為什麼,我們基本上所有用property的地方,都用的是nonatomic了。

還有一點,可能有讀者經常看到,在我的教程的dealloc函式裡面有這樣的**:self.*** = nil;看到這裡,現在你們明白這樣寫有什麼用了吧?它等價於[*** release];  *** = [nil retain];(---如果你的property(nonatomic,retian)***,那麼就會這樣,如果不是,就對號入座吧)。

因為nil可以給它傳送任何訊息,而不會出錯。為什麼release掉了還要賦值為nil呢?大家用c的時候,都有這樣的編碼習慣吧。

int* arr = new int[10];    然後不用的時候,delete arr; arr = null;  在objc裡面可以用一句話self.arr = nil;搞定。

property和 property的一些小結

在.h檔案中 inte cemyclass nsobject property nonamtic,retain myobjecct myobject end 在.m檔案中 implementation myclass synthesize myobject myobject void dealloc...

一些常用的演算法記錄

1 插入演算法 public static void main string args arr j 1 temp 2 歸併排序 public static void main string args date time1 new date long a1 time1.gettime for int ...

一些常用方法的記錄

1.建立臨時目錄 建立臨時目錄 try catch ioexception e 結果 2.正規表示式的組 測試正規表示式 string slippingwindowpointoprand s s s string slippingwindowpointcollectoprand slippingwi...