Каждый Objective-C @implementation
представлен во время выполнения объектом, «объектом класса». Объект класса управляет словарем методов для методов экземпляра.
Например, для UIView
существует объект класса UIView
. Когда вы вызываете NSClassFromString(@"UIView")
(или [UIView class]
или [UIView self]
), он возвращает объект класса UIView
. Объект класса UIView
управляет словарем методов для UIView
методов экземпляра.
Объект класса UIView
сам является экземпляром другого класса, называемого метаклассом UIView
. Метакласс UIView
представлен другим объектом класса, объектом метакласса UIView
. Объект метакласса UIView
управляет словарем методов для UIView
методов класса.
Итак, чтобы получить список методов класса для UIView
, вам нужно передать объект метакласса UIView
в class_copyMethodList
.
Class UIView_class = NSClassFromString(@"UIView");
Class UIView_metaclass = object_getClass(UIView_class);
unsigned int count;
Method *classMethods = class_copyMethodList(UIView_metaclass, &count);