0

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

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

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

4

1 回答 1

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

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

于 2012-07-25T16:39:41.633 回答