Objective-C記憶體管理教程和原理剖析(三)

發表於2014-05-03

@property (retain)@synthesize的預設實現

在這裡解釋一下@property (retain) ClassB* objB;@synthesize objB;背後到底發生了什麼(retain property的預設實現)property實際上是gettersetter,針對有retain引數的property,背後的實現如下(請參考附件中的memman-getter-setter.m,你會發現,結果和memman-property.m一樣):

setObjB中,如果新設定的值和原值不同的話,必須要把原值物件release一次,這樣才能保證retain count是正確的。

由於我們在class內部retain了一次(雖然是預設實現的),所以我們要在dealloc方法中release這個成員變數。

示例程式碼檔案連結:http://files.cnblogs.com/VinceYuan/objective-c-memman.zip

相關文章