- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
苹果的解释是
objc_getClass
is different fromobjc_lookUpClass
in that if the class is not registered,objc_getClass
calls the class handler callback and then checks a second time to see whether the class is registered.objc_lookUpClass
does not call the class handler callback.
但我不太理解“类处理程序回调”。你能更详细地解释一下吗?我希望有一些代码可以显示它们的区别,非常感谢!
最佳答案
Apple 文档中对这两种方法的解释不清楚,但 Objective C 运行时代码是开源的,可在 Apple Opensource 获取。 .
这两个方法的实现是:
Class objc_getClass(const char *aClassName)
{
if (!aClassName) return Nil;
// NO unconnected, YES class handler
return look_up_class(aClassName, NO, YES);
}
Class objc_lookUpClass(const char *aClassName)
{
if (!aClassName) return Nil;
// NO unconnected, NO class handler
return look_up_class(aClassName, NO, NO);
}
这两个方法都委托(delegate)给 look_up_class
方法,最后一个参数 includeClassHandler
具有不同的参数。
但是看看look_up_class
的实现我们可以看到,最后两个参数实际上根本没有被使用!
Class
look_up_class(const char *name,
bool includeUnconnected __attribute__((unused)),
bool includeClassHandler __attribute__((unused)))
{
if (!name) return nil;
Class result;
bool unrealized;
{
rwlock_reader_t lock(runtimeLock);
result = getClass(name);
unrealized = result && !result->isRealized();
}
if (unrealized) {
rwlock_writer_t lock(runtimeLock);
realizeClass(result);
}
return result;
}
因此,总而言之,objc_getClass
和 objc_lookUpClass
的行为相同。
关于ios objc_getClass 和 objc_lookUpClass 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41195429/
在我的 Xcode 项目中,我为 ios7 和 ios8 添加了相同的框架。我将它们重命名为 xxx-ios7.framework 和 xxx-ios8.framework。我想使用 objc_get
苹果的解释是 objc_getClass is different from objc_lookUpClass in that if the class is not registered, objc
if respondsToSelector("UIAlertController"){ //do something } if objc_getClass("UIAlertController
我尝试过同时使用: NSClassFromString and objc_getclass 返回一个类,这样我就可以在运行时创建它,但这两个函数对于某些类都返回 nil,例如“TestClass”。请
我正在尝试使用 objc 运行时动态加载继承自 NSObject 的 Swift 类。 (我试图从 ObjC 加载类,而不是从 Swift 加载类) 我的 Swift 类: @objc public
我是一名优秀的程序员,十分优秀!