如何使用category
覆盖?如果我有:
#import "UIColor+backColor.h"
@implementation UIColor (backColor)
@end
我要添加什么来覆盖+[UIColor groupTableViewBackgroundColor]
?
答案 0 :(得分:1)
只需重新实施它:
+ (UIColor *)groupTableViewBackgroundColor {
return mySpecialColor;
}
当你这样做时,它会被覆盖。
编辑:这似乎没有工作(虽然它应该这样做!),所以这里是一个非常准确的方法调整实现来改变方法的返回值:
#import <objc/runtime.h>
#import <objc/message.h>
UIColor *modified(Class __self, SEL __cmd)
{
return someOtherColor;
}
Class clazz = [UIColor class];
static IMP original;
Method m = class_getClassMethod(clazz, @selector(groupTableViewBackgroundColor));
original = method_setImplementation(m, (IMP)modified);
这一切都应该在初始化期间尽早完成。