日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

object c中 new和alloc区别

發布時間:2023/12/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 object c中 new和alloc区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在object-c基礎教程這本書里老是可以看見類似下面這種代碼,我這小菜鳥就納悶了,啥區別啊,看上去都一樣么。網上找了找,找到一些說法,這里先摘出來。
? ??className* object = [className?new];
or
? ??className* object = [[className?alloc] init];
背景說明,new是較為老式的寫法,后來發現只有一個new不好使,才引入了alloc和init這種寫法,保留new一是向后兼容,二是很多時候是一種更簡單的寫法。其實是一樣的,new在內部調用的alloc和init.

源代碼:



[className new]基本等同于[[className alloc] init]. 區別只在于alloc分配內存的時候使用了zone,這個zone是個什么東東呢?它是給對象分配內存的時候,把關聯的對象分配到一個相鄰的內存區域內,以便于調用時消耗很少的代價,提升了程序處理速度.
什么要把alloc 和init 分開?
1. 可以使用多種init方法
2.?顯示調用總比隱式調用要好”
如果確實不需要用其他的init函數,比如initWithString, 只是使用 [Nsobject alloc] init] ,那用new的方法更加方便

?* new doesn't support custom initializers (like initWithString)

?* alloc-init is more explicit than new

===========================================


總結

以上是生活随笔為你收集整理的object c中 new和alloc区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。