他們拖拽的方法說明在蘋果的文檔中不明確。但運行代碼在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;
}