objective-C 中的內存管理

1. 手動管理。下面這篇博文絕對能讓你清晰不少。http://www.cocoachina.com/bbs/read.php?tid=15963 php

不過這裏須要指出兩點: html

1.1 文中說你autorelease的對象會被放到一個nsmutablearray中,這個未必,總之,知道是放在了某個容器中就ok了,不必較真 程序員

1.2 文中說到的一些在viewDidUnload中的操做,如今應該移植到didReceiveMemoryWarning中,字iOS6之後就沒有viewDidUnload操做了,該釋放的對象不能忽視。 iphone

1.3 autorelease能少用,儘可能少用。 網站

2. ARC (固然我是比較推薦使用arc的,尤爲是對內存的管理沒有太多自信的時候)畢竟它能夠節約開發時間,讓程序員們吧主要經歷放在開發主要代碼上。 spa

arc使用的一些規則: .net

2.1 不能直接調用dealloc方法,不能重載或直接調用retain, release, retainCount, 或 autorelease等方法 指針

2.2 在c語言的結構體中,不能再使用對象指針。應放棄c結構體,而使用oc對象。 htm

2.3 不能使用NSZone 對象

2.4 不能使用NSAutoreleasePool,ARC提供了@autoreleasepool語句塊

2.5 方法和變量的命名不能以「new」開頭

關於對象的生命週期

  • weak引用:設置成weak的屬性,不會影響對象的生命週期,若是引用的對象已經被釋放,引用會指向nil。

  • strong引用:設置成strong的屬性,會影響對象的生命週期。

關於arc我這裏也提供幾個很好的網站鏈接

iOS ARC機制 weak strong

 ARC,IBOutlets 應該定義strong仍是weak

什麼是ARC

相關文章
相關標籤/搜索