在樣式或效率方面,NSMutableArray *myArray = [[NSMutableArray alloc] init];
是否比NSMutableArray *myArray = [NSMutableArray new];
更正確?Obj-C 2.0中NSMutableArray的實例化
回答
實際上它們都用於初始化新對象。新的也會做分配和初始化。但蘋果建議首先撥打分配,然後調用init方法。這就是爲什麼我們使用[[NSMutableArray alloc] init]
反正沒有什麼大的區別就在這裏
即使您正在使用'new'。 'alloc'將首先執行,然後僅對其進行初始化。其實兩者都是一樣的 –
也不是「比較正確」,而事實上,他們在功能上等同,但alloc
比new
更爲常見,因爲自定義初始化總是通過initWith...
風格的方法完成。所以很難說風格正確,但new
是肯定不太風格標準在現代Objective-C。
這應該是被接受的答案。現代目標C更喜歡「新」,除非你不應該像任何自定義初始化程序一樣,像'initWith..' –
其實蘋果在去年的WWDC或前一年表示'new'是一個過時的風格。新課程幾乎沒有「新」的方法,蘋果公司高度鼓勵你在自己的課堂上提供他們,他們甚至提供了一個技術原因,爲什麼不應該使用它們,但我不記得它是什麼。 – Mecki
@Mecki:'new'是舊式的,絕對是真的。 'new'是Objective-C更傾向於Smalltalk方向時的過去。但是,「新課程幾乎沒有」新「方法」,這並不是真的。它們像所有其他類一樣繼承NSObject的'new',這相當於alloc + init。如果你可以寫'[[SomeNSObjectSubclass alloc] init]',你可以編寫'[SomeNSObjectSubclass new]'。它沒有被標記爲棄用;它只是風格上的非標準。 – Chuck
- 1. 在ObjC實現文件中聲明的實例變量
- 2. 在java代碼中實例化jsp 2.0的標記
- 3. NSMutableArray的作爲變量的實例
- 4. 實例化IronPython中
- 5. 如何從ObjC中的類方法設置實例變量
- 6. Vue.js 2.0主要實例
- 7. objC three20例如ttnavigator菜單控制頁面實例聲明
- 8. 如何從NSMutableArray設置實例變量?
- 9. NSMutableArray實例變量內存管理
- 10. ARC/ObjC++:C++的ObjC容器
- 11. AS3:實例化類的實例
- 12. 類的實例化
- 13. 實例化TinyMCE的
- 14. 在javascript實例化方法中實例化一個對象
- 15. 上實例化
- 16. 實例化Ext.form.CompositeField
- 17. AssetManage實例化
- 18. C++實例化
- 19. 實例化DefaultBoundedRangeModel
- 20. XIB實例化
- 21. 實例化Javabean
- 22. 實例化ActionDescriptor
- 23. TrackballGestureDetector實例化
- 24. 實例化C#
- 25. Java實例化
- 26. 角2.0最後:如何從代碼實例化組件
- 27. 的OAuth 2.0實例驗證服務器
- 28. 如何從NSMutableArray中只刪除一個對象的實例?
- 29. 無法把NSSound實例中的NSMutableArray離子可可
- 30. 在Verilog中實例化
這兩者在功能上是相同的。 「新」可能沒有得到充分利用,主要是出於習慣(還有一點恐懼)。 –