如何使用 a 覆盖category
?所以如果我有:
#import "UIColor+backColor.h"
@implementation UIColor (backColor)
@end
我要添加什么来覆盖+[UIColor groupTableViewBackgroundColor]
?
如何使用 a 覆盖category
?所以如果我有:
#import "UIColor+backColor.h"
@implementation UIColor (backColor)
@end
我要添加什么来覆盖+[UIColor groupTableViewBackgroundColor]
?
只需重新实现它:
+ (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);
这一切都应该在初始化期间尽早完成。