序言:翻閱資料悯仙,學(xué)習(xí),探究吠卷,總結(jié)锡垄,借鑒,謝謝探路者祭隔,我只是個搬運工货岭。
參考、轉(zhuǎn)發(fā)資料:
http://blog.csdn.net/wangjiwei2010/article/details/47057127
new是較為老式的寫法疾渴,后來發(fā)現(xiàn)只有一個new不好使千贯,才引入了alloc和init這種寫法,保留new一是向后兼容搞坝,二是很多時候是一種更簡單的寫法搔谴。其實是一樣的,new在內(nèi)部調(diào)用的alloc和init.
- alloc方法是給類分配內(nèi)存空間(通過malloc方法)桩撮。
- init方法初始化
- new是結(jié)合了alloc己沛,隱士的調(diào)用了init方法。
[className new]基本等同于[[className alloc] init]距境,在功能上是一致的申尼,當(dāng)我們只是為了使用init方法初始化時,都一樣垫桂,new是隱士的調(diào)用了init方法师幕,所以固定死了一個初始化方法為init,而alloc方法可以我們隨意的使用initXXX方法。
區(qū)別只在于alloc分配內(nèi)存的時候使用了zone霹粥,這個zone是個什么東東呢灭将?它是給對象分配內(nèi)存的時候,把關(guān)聯(lián)的對象分配到一個相鄰的內(nèi)存區(qū)域內(nèi)后控,以便于調(diào)用時消耗很少的代價庙曙,提升了程序處理速度。什么要把a(bǔ)lloc 和init 分開?
- 可以使用多種init方法
- 顯示調(diào)用總比隱式調(diào)用要好”
alloc, copy,new創(chuàng)建的對象是不加入到自動釋放池當(dāng)中的浩淘,需要我們手動釋放捌朴,而array方法創(chuàng)建的對象是加入到自動釋放池當(dāng)中的,自動釋放池什么時候釋放张抄,變量就什么時候釋放砂蔽。