我一直在想這一段時間,Google並沒有提供給我我想要的信息。鑄造過程需要多快?它取決於對象所具有的字段數量嗎?是不惜一切代價避免的東西?它在x32,x64和ARM機器上有所不同嗎?Casting Objective-C對象
1
A
回答
6
只有編譯器纔會向您發出更好的警告。在運行時間鑄造沒有性能影響。所有對象都只是對象。你發送消息給這些對象。
運行時並不在乎你在代碼中有一個指向該對象的指針時給出的類型。無論發生什麼,它都會發送消息。
例如:
NSArray *myString = [NSString stringWithFormat:@"Hello"];
NSNumber *longerString = [(NSString *)myString stringByAppendingString:@" World"];
NSLog(@"%@", longerString);
將記錄Hello World
。你真的給類型的東西編譯器可以檢查,但運行時只知道你傳遞一個消息到一個對象。它將使用對象的類來查找從消息名稱調用的方法,但它不關心在編譯時輸入的內容。
你可能也做:
id myString = [NSString stringWithFormat:@"Hello"];
id longerString = [myString stringByAppendingString:@" World"];
NSLog(@"%@", longerString);
和運行時會做同樣的事情,但是編譯器會根據不同的語義的類型設定不同的匹配和產生警告/錯誤(基本上,做任何對象說它響應這個消息)。
+2
+1。鑄造只是一種合成糖。它與運行時間無關。 – 2012-03-30 18:27:10
相關問題
- 1. Casting Simple.Data.Query到POCO對象
- 2. Java - Casting,仿製藥,對象和陣列
- 3. Linqpad Casting錯誤實體對象到IObjectContextAdapter
- 4. 選擇所有球員對象ObjectiveC
- 5. 我泄漏這個ObjectiveC對象嗎?
- 6. Casting arrayList
- 7. Casting「Stylee」
- 8. Casting COM接口
- 9. Casting Shadows
- 10. Casting using System.Type - c#
- 11. android studio casting warning
- 12. WPF Casting in Binding Path
- 13. objectCast Sideways casting
- 14. Casting和ArrayList
- 15. 對象之間的類層次結構和Casting
- 16. PHP Casting變量作爲foreach中的對象類型循環
- 17. Java包裝類。 Casting
- 18. Casting SqlDataReaders
- 19. ObjectiveC中指定對象的內存使用情況
- 20. 在objectiveC(SBJSON)對象和數組中解析JSON
- 21. ObjectiveC - 通過分佈式對象顯示窗口
- 22. 對象鑄造/的ObjectiveC從斯威夫特
- 23. Casting C#List <>
- 24. Casting命名空間
- 25. NumberFormatter - ObjectiveC
- 26. Memcpy Casting C
- 27. C#Casting vs. Parse
- 28. Java Casting Object to Type?
- 29. 運行時的Java Casting
- 30. 指針Casting Endianness
假設你正在投射像int,float等標量類型而不是對象,對不對?鑄造objets是爲了讓編譯器輸入檢查。 – 2012-03-30 18:19:21