Чтобы динамически добавить метод класса, вместо метода экземпляра, используйте 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
и используя определение класса forward, то есть @class UIGroupTableViewCellBackground
, чтобы получить егокомпилировать.