通过UIColor上的类别覆盖+ [groupTableViewBackgroundColor]

时间:2012-07-25 16:35:45

标签: iphone override

如何使用category覆盖?如果我有:

#import "UIColor+backColor.h"
@implementation UIColor (backColor)
@end 

我要添加什么来覆盖+[UIColor groupTableViewBackgroundColor]

1 个答案:

答案 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);

这一切都应该在初始化期间尽早完成。