他们拖拽的方法说明在苹果的文档中不明确。但运行代码在Apple Opensource中运行。 根据运行时的oppensource,我发现他们如下二方法FPGA实现:
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);
}
他们拖方法都调用了look_up_class
方法,在最后一个参数不同。在look_up_class
内部,最后一个参数不使用。因此,总之,我认为objc_getClass
和objc_lookUpClass
都是一样的。
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;
}