記憶體管理中各屬性值的區別

2021-07-07 08:40:31 字數 1802 閱讀 2236

strong,assign,retain,weak,copy的區別

strong與weak是由arc新引入的物件變數屬性 

xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和assign,是不支援arc的。xcode 4.3(ios5和以上版本)之後就有了arc,並且開始使用 

strong與weak 

assign: 用於非指標變數。用於 

基礎資料型別 (例如nsinteger)和c資料型別(int, float, double, char, 等),另外還有id 

如: @property (nonatomic, assign) int number; 

@property (nonatomic, assign) id classname;//id必須用assign 

反正記住:前面不需要加 「*」 的就用assign吧 

retain:用於指標變數。就是說你定義了乙個變數,然後這個變數在程式的執行過程中會被更改,並且影響到其他方法。一般是用於字串( nsstring,nsmutablestring),陣列(nsmutablearray,nsarray),字典物件,檢視物件(uiview ),控制器物件(uiviewcontroller)等 

比如: 

@property (nonatomic,retain) nsstring * mystring; 

@property (nonatomic, retain) uiview * myview; 

@property (nonatomic, retain) uiviewcontroller * myviewcontroller; 

xcode 4.2不支援arc,所以會頻繁使用retain來修飾,用完釋放掉,而xcode4.3支援arc,可以使用retian,不需要手動釋放記憶體,系統會自動為你完成,如果你在xcode4.3上面開發,retian和strong都是一樣的,沒區別 

strong和weak: 

事實上 

@property(nonatomic,strong) myclass *myobject;就是相當於@property(nonatomic,retain) myclass *myobject;@property(nonatomic, weak )iddelegate;就是相當於@property(nonatomic,assign )iddelegate; 

現在系統自動生成的屬性都是用weak來修飾的,我想應該是xcode 4.2不支援arc,所以大家都是用retain。現在xcode4.3支援arc了,於是蘋果建議程式設計師放棄retain,以後都用weak。 

weak 就是相當於assign,同樣可以在xcode4.3開發環境下放棄使用assign 使用weak 來代替 

copy:這個東西估計是大部分人最不容易搞明白的東西,我也搞不明白。聽別人說這個東西基本不用了,效果其實和retain沒什麼兩樣,唯一的區別就是copy只用於nsstring而不能用於nsmutablestring。 

不過好像當乙個類繼承nsobject,那麼這個類裡面的屬性需要使用copy,比如: 

#import

#import

@inte***ce annotation : nsobject  

@property (nonatomic) cllocationcoordinate2d coordinate; 

@property (nonatomic, copy) nsstring *title; 

@property (nonatomic, copy) nsstring *subtitle; 

@end 

反正以後就這麼用就是了 

TagSupport中的各屬性代表的意思

eval body buffered表示標籤體的內容應該被處理,所有處理結果都將儲存在bodycontent類中。skip body表示忽略標籤體內容,將操作權交給doendtag 方法。eval body again表示重複執行標籤體內容,會再次呼叫doafterbody 方法,直到出現skip ...

pod定義檔案模板中各屬性的詳細說明

apiversion v1 必選,版本號,例如v1,版本號必須可以用 kubectl api versions 查詢到 kind pod 必選,pod metadata 必選,元資料 name string 必選,pod名稱 namespace string 必選,pod所屬的命名空間,預設為 de...

簡析CSS中position屬性值的區別

position規定元素的定位型別,可以設定的值有 static,relative,absolute,fixed,inherit。我們寫5個方塊,來顯示各個值的區別。type text css test1 test2 test3 test4 test5 style class test1 test1...