不知道是否使用類方法或實例方法來創建NSarray ....我的意思是有很多方法來創建它們... 對不起,新的ios開發。實例和類方法之間的混淆
-1
A
回答
0
基本上有三種方式來獲得,例如,一個NSArray:
- 標準分配/初始化。從概念上講,至少
[NSArray alloc]
是對NSArray的類方法的調用,然後結果對象調用init..
步驟的特殊形式的實例方法。 [NSArray arrayWithSomethingOrAnother..]
。這會調用NSAArray上的一個類方法,該方法在內部執行alloc/init(有幾次曲折),然後根據需要「填充」該對象。[someObject arrayByDoingSomething..]
。這是一個返回NSArray的對象(可能是也可能不是NSArray對象)的實例方法。
實際上有沒有太多的情況下,有重疊之間(2)和(3) - 想不出任何副手爲NSArray的,雖然有針對類似的NSString功能屈指可數。雖然純粹主義者可能更喜歡舊的alloc/init類與arrayWith...
類方法,但真正需要在ARC環境中使用NSArray上的alloc/init(儘管它仍然在手動引用計數環境中)。
4
如果您使用ARC,則沒有區別。例如,這些2行返回相同的事情:
[[NSArray alloc] initWithObject:myObject];
[NSArray arrayWithObject:myObject];
唯一的區別是,後者返回一個autoreleased對象,它必須被如果正在使用ARC同樣的方式處理作爲另一個。如果不是,則應該將retain
添加到第二行代碼中,以防您希望返回對象的所有權。
0
您可以使用任何編程語言創建NSArray或字符串,即分配內存 - >將實例變量初始化爲您想要的某種狀態。
可以創建e.g陣列..
的NSArray * myArray的= [[NSArray中的alloc] INIT];
現在你也可以使用一些其他類的方法也讓我們的NSString用於如 的NSString * myString的= [NSString的stringwithformat:@ 「%@ - 這是我的字符串 - %@」,@」 < - 」 @ 「 - >」];
現在使用ARC,它不會有太大的區別,因爲ARC會照顧釋放創建的對象,因爲類方法通常是自動釋放的。
相關問題
- 1. 與`類實例方法'混淆
- 2. 混淆對象的類方法實例上的運行方法
- 3. 混淆創建類實例
- 4. 局部變量,實例變量和符號之間的混淆
- 5. Java實例混淆
- 6. 類方法和實例方法之間的區別?
- 7. 跟進:類方法和實例方法之間的區別?
- 8. 混淆實例變量,創建新的對象和方法?
- 9. 方法參數和實例變量名稱相同的混淆
- 10. C++編譯器的11類和同名類方法之間混淆
- 11. 混淆的base64類方法的用法
- 12. 重定向和RedirectToAction之間的混淆
- 13. Jade和Handlebar之間的混淆
- 14. 芹菜和芹菜之間的混淆
- 15. getLocationInWindow和getLocationOnScreen之間的混淆
- 16. 黑莓BES和BIS之間的混淆
- 17. @Transactional和AOP之間的混淆
- 18. numpy,scipy,matplotlib和pylab之間的混淆
- 19. Python和Anaconda之間的混淆
- 20. JSON和XML之間的混淆
- 21. Kbps和KBps之間的混淆
- 22. Thrift API和CQL之間的混淆
- 23. 混淆字符串和實例
- 24. 類實例和靜態方法之間的關係
- 25. 在模塊中混淆單例方法
- 26. ES6模塊語法和Typescript模塊語法之間的混淆
- 27. ElasticSearch中的映射和類型之間的混淆
- 28. 關聯類圖中的混淆方法
- 29. 混淆方法Object.prototype.valueOf()
- 30. session.persist()方法混淆