2013年7月17日 星期三

Manual Retain Release

話時話 宜家新公司既project 都仲未用ARC

一黎要時間轉用 二黎有好多舊project 仲係non-ARC

而我本身由ARC 去用返non-ARC 既時候

發現有啲concept 原來唔夠熟 好容易發生memory leak/crashes既情况

寫低幾個guideline 比自己重溫

alloc init / new 過就要 release 好簡單

如果人地外面function比個autorelease 既野出黎 例如啲string / db result 可以用完唔洗retain /release

@property (nonatomic, retain) SomeClass classA;

nonatomic 會自動做個getter/ setter

例如咁寫
self.classA = xxxxx;

佢後面會有
//setter
[classA release];
classA = xxxx //grounding
[classA retain];
平時我係咁寫
classA = xxxx
其實咁做只會多左個pointer 指住想要既野 但係無retain 到 到用既時候因為無左就crash

所以如果有啲callback (例如web services) 就用self.classA 就一定肯定之前既result 會無左 memory leak 就唔會發生

further reading

http://bonjouryentinglai.wordpress.com/2009/12/30/objective-c%E9%9A%A8%E6%89%8B%E7%AD%86%E8%A8%98-i%EF%BC%9Aproperty/ 


沒有留言:

張貼留言