iOS 屬性的屬性

關於retain, assign, copy的含義已經有很多文章了,自己使用的經驗:


賦值:

class.propertyA = instanceA

retain, assign, copy 隻影響 instanceA的計數,可能增加,可能不變。到這句執行完畢爲止,只要instanceA是合法的,propertyA就是合法的。

retain, assign, copy: 

誰創建了instanceA還是誰負責釋放。但不同的類型,釋放的時間不同。

retain 可以馬上釋放。
assign 在 properyA 使用完畢後纔可以釋放
copy 可以馬上釋放。


常見的retain賦值:

addSubview, rootViewController, addGesture

常見的assign賦值:(概念上,背後到底有沒有保存變量無關緊要)

presentModalViewController; presentPopover 


釋放:

對於retain類型的屬性:

class.propertyA = nil; // class.propertyA = xxx; 

相當於:[propertyA release];


而assign類型的屬性(例如一般來說IBOutlet )

要釋放必須是:

[propertyA release];

而一般不應該釋放,沒有職責釋放assign類型的屬性。但是在ViewDidUnLoad裏面有時需要釋放IBOutlet來節省空間。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章