我們使用[ClassName class]檢查新版本iOS中的弱鏈接類或類。 [ClassName class]引發了什麼?它是否通過NSClassFromString?[ClassName class]引發了什麼?
回答
請記住,在obj-c中,您可以發送消息給nil。
我懷疑發生了什麼事是ClassName是零,直到它由運行時加載。如果它永遠不會被加載,那麼你基本上是將類的消息發送到nil,根據文檔它將返回0/nil。根據the docs
:
這工作,因爲如果一個弱鏈接的類不可用時,將消息發送到它像發送消息到零。如果您對弱鏈接的類進行子類化,並且超類不可用,那麼該子類也不可用。
重要的是,對於這個工作框架必須支持其類的NS_CLASS_AVAILABLE(10_5, 2_0)
宏。
這裏有一些事情正在進行。弱鏈接只是告訴LLVM(-weak_framework <framework_name>
)不要擔心符號和優化。 Apple建議在支持以前的未來運行時SDK時啓用此選項。您不能鏈接到SDK中不存在的框架。
至於[ClassName class]
這不是NSString
也不是免費橋對應CFStringRef
。這是Objective-C類的元數據
typedef struct objc_object {
Class isa;
} *id;
身份通過NS_CLASS_AVAILABLE
宏觀測試,其掃描從運行時元數據導出的所有對象。
我敢肯定'[類名類]'返回一個Class(又名'typedef結構objc_class *類;')不是objc_object(又名* ID) –
@BradAllred是正確的,它實際上是 '@interface NSObject的
- 1. 爲什麼設置className和class?
- 2. 在PHP中,ClassName :: class是什麼意思?
- 3. Classname + $。是什麼導致了它?
- 4. class_eval和class << className有什麼區別?
- 5. class ClassName * MethodName(int foo)const - 這是什麼意思?
- 6. React 16中的class vs className
- 7. 'this'關鍵字在Asp.Net Page Class中引用了什麼?
- 8. Grid.Children.Add引發了什麼事件
- 9. Python for循環中引發了什麼?
- 10. Haskell中的`derivation`引發了什麼?
- 11. 「Class not found」我錯過了什麼?
- 12. Class :: MethodMaker究竟做了什麼?
- 13. @class在iOS 4開發中做了什麼?
- 14. 「new Classname * []」是什麼意思?
- 15. 「(ClassName *)」的功能是什麼
- 16. class tf.train.Coordinator和class tf.train.QueueRunner在tensorflow中做了什麼?
- 17. 爲什麼「[self class] == [super class]」?
- 18. 發生了什麼錯了?
- 19. <className> .class和此差異(代表<classname>)
- 20. 發生了什麼
- 21. )。發生了什麼?
- 22. Class是什麼?
- 23. class =「」做什麼?
- 24. 爲什麼我得到對Class :: Class()的undefined引用?
- 25. ClassName的用途是什麼?這超出了消歧?
- 26. 什麼是std :: _ Bind <std :: _ Mem_fn <void(ClassName :: *)()>(ClassName *)>是什麼意思? (C++)
- 27. 對ClassName :: ClassName的未定義引用
- 28. 在Javascript中刪除<p class =「classname」>?
- 29. ClassName :: PHP中帶有Symfony框架的CLASS
- 30. Django/Python:混淆class Classname(models.Model)參數
如果你想薄弱環節,我相信'[類名類]'將無法工作。你有一個關於類符號的鏈接引用,所以你將無法使用它。你將不得不使用'NSClassFromString()'。 – nielsbot
第一個編譯和鏈接一個類的引用,第二個沒有關於類的可用性的假設。所以不,'[ClassName類]'可能不使用'NSClassFromString()' – nielsbot
@nielsbot [它會編譯和鏈接](http://stackoverflow.com/questions/14002304/how-to-import-social-據我所知,僅限於框架 - for-ios-6/14002350#14002350)。 – 2013-10-22 23:03:54