作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们使用 [ClassName class] 来检查弱链接类或新版本 iOS 中的类。 [ClassName class] 背后发生了什么?它会通过 NSClassFromString 吗?
最佳答案
请记住,在 obj-c 中,您可以向 nil 发送消息。
我怀疑正在发生的事情是 ClassName 在被运行时加载之前为 nil。如果它从未加载,那么您基本上是将类消息发送给 nil,根据文档,它会返回 0/nil。
根据 the docs :
This works because if a weakly linked class is not available, sending a message to it is like sending a message to nil. If you subclass a weakly linked class and the superclass is unavailable, then the subclass also appears unavailable.
重要的是,要使其正常工作,框架必须在其类上支持 NS_CLASS_AVAILABLE(10_5, 2_0)
宏。
关于objective-c - [ClassName class] 背后发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19529760/
我是一名优秀的程序员,十分优秀!