在objective-c中使用運行時庫可以征服的問題究竟是什麼?我發現運行時庫沒有實際用處o_oObjective-C運行時庫使用
2
A
回答
8
被征服的主要問題是使語言工作。如果沒有ObjC運行時庫,則不能使用ObjC程序。
ObjC運行時庫實現了向對象發送消息,從類中查找方法實現,獲取類數據等。所有這些都不能在編譯時完成,因此它需要運行時支持。這種對運行時支持的需求孕育了ObjC運行時庫。
如果它與Objective-C有關,則可能是運行時庫在它後面。
作爲the documentation狀態,
此共享庫提供支持 爲 Objective-C語言的動態特性,並且因此是 由所有的Objective-C 應用鏈接到。
此引用有用主要用於 開發低級調試 Objective-C和其他語言,或 之間橋接層。
您可能想查看功能列表。有些人,如objc_msgSend
,實施您可能錯誤認爲理所當然的行爲。例如,電話:
[foo bar:4];
實際上被編譯爲:
objc_msgSend(foo, sel_getUid("bar:"), 4);
或東西沿着這些路線。
4
Zneak的答案是點亮的。如果您對顯式調用運行時可以做什麼感到好奇,那麼就像反射(finding information about classes),修改現有類,changing method implementations等等,這些都是程序運行時的情況。
相關問題
- 1. 使用handlebars運行時庫
- 2. ObjectiveC mutableCopy如何快速運行
- 3. 在運行時將ObjectiveC字符串字符串化
- 4. 使用C運行時庫函數只
- 5. 使用AFNetworking 3.X ObjectiveC
- 6. 使用gdata-objectivec-client授權
- 7. 如何使用gdata-objectivec-client?
- 8. 如何使用cl.exe鏈接靜態庫? (指定運行時庫)
- 9. 使用單個DLL庫在運行時導入其他庫
- 10. 運行時使用ANN庫(使用FANN)的未預知結果
- 11. 運行時 - 執行到使用mysqldump轉儲數據庫JAVA
- 12. 使用運行時庫和可執行文件創建RPM包
- 13. DragLinearLayout庫在使用LayoutTransition實現時在運行時崩潰
- 14. 錯誤使用符合ICC多線程運行時庫時14
- 15. 使用JavaScript驅動運行RSpec/Capybara時數據庫超時
- 16. 使用iPhone中的C/C++靜態庫ObjectiveC Apps
- 17. 壓縮庫Windows運行時
- 18. 運行時共享庫
- 19. 微軟運行時庫
- 20. 缺少運行時庫Websphere
- 21. Visual Studio 2010運行時庫
- 22. Corrupt C運行時庫?
- 23. 使用Class.forName在運行時
- 24. 在運行時使用`EditorSceneManager.SaveScene`
- 25. 使用C#在運行時
- 26. 如何使用運行時
- 27. 如何在運行時加載類庫DLL並使用VB.NET運行類函數?
- 28. 的ObjectiveC類別不進口,但仍運行代碼
- 29. NumberFormatter - ObjectiveC
- 30. 創建在運行時庫和運行時
我一直在尋找如何獲得屬性列表。感謝您的代碼! – 2011-04-28 05:17:42
我很高興你發現它很有用。我鏈接的代碼雖然有些詭異,但我只對某些特定情況感興趣,可能還有很多其他錯誤。如果你對運行時感興趣,我會建議Mike Ash提供的[MAObjCRuntime](https://github.com/mikeash/MAObjCRuntime)。 – zoul 2011-04-28 06:03:32
太好了,謝謝,我也會研究一下。 – 2011-04-28 06:09:40