Ответ 1
Чтобы динамически добавить метод класса вместо метода экземпляра, используйте object_getClass(cls)
для получения метакласса, а затем добавьте метод в мета-класс. Например:.
UIKIT_STATIC_INLINE Class my_layerClass(id self, SEL _cmd) {
return [MyLayer class];
}
+ (void)initialize {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Class class = object_getClass(NSClassFromString(@"UIGroupTableViewCellBackground"));
NSAssert(class_addMethod(class, @selector(layerClass), (IMP)my_layerClass, "@:@"), nil);
});
}
Вы также можете сделать это проще, добавив метод +layerClass
к категории UIGroupTableViewCellBackground
и используя определение прямого класса, т.е. @class UIGroupTableViewCellBackground
, чтобы его компилировать.