序言:翻閱資料,學習,探究,總結,借鑒,謝謝探路者,我只是個搬運工。
參考、轉發資料:
http://blog.csdn.net/wangjiwei2010/article/details/47057127
new是較為老式的寫法,后來發現只有一個new不好使,才引入了alloc和init這種寫法,保留new一是向后兼容,二是很多時候是一種更簡單的寫法。其實是一樣的,new在內部調用的alloc和init.
- alloc方法是給類分配內存空間(通過malloc方法)。
- init方法初始化
- new是結合了alloc,隱士的調用了init方法。
[className new]基本等同于[[className alloc] init],在功能上是一致的,當我們只是為了使用init方法初始化時,都一樣,new是隱士的調用了init方法,所以固定死了一個初始化方法為init,而alloc方法可以我們隨意的使用initXXX方法。
區別只在于alloc分配內存的時候使用了zone,這個zone是個什么東東呢?它是給對象分配內存的時候,把關聯的對象分配到一個相鄰的內存區域內,以便于調用時消耗很少的代價,提升了程序處理速度。什么要把alloc 和init 分開?
- 可以使用多種init方法
- 顯示調用總比隱式調用要好”
alloc, copy,new創建的對象是不加入到自動釋放池當中的,需要我們手動釋放,而array方法創建的對象是加入到自動釋放池當中的,自動釋放池什么時候釋放,變量就什么時候釋放。