OC_alloc和New方法的區別,以及其它初始化方法的區別

序言:翻閱資料,學習,探究,總結,借鑒,謝謝探路者,我只是個搬運工。
參考、轉發資料:
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方法創建的對象是加入到自動釋放池當中的,自動釋放池什么時候釋放,變量就什么時候釋放。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容