2010年9月18日 星期六

[Objective C] Memory management note(1)

Objective C的memory management 在我看來其實跟C++是一致的。alloc對應到new, dealloc對應到delete。不過因為Objective C又使用了garbage collection,所以我們其實不會真正的用到dealloc來消滅物件,我們只要維持好一個instance的reference counting,GC會在恰當的時間( 也就是物件變成沒人要的小孩,ref. count == 0)時為我們自動dealloc該物件。這樣做的好處是什麼?不讓programmer直接dealloc物件可以相當程度的避免crash。同時memory management也可以保證沒有leakage -- 如果ref.count維持的正確的話。 programmer可以利用retain/ release來手動增減ref. count,雖然不如java/ C#方便,而且大部份初學者都會在這邊浪費一堆時間,但總之還是一個行得通的方法。