0

を使用してオーバーライドするにはどうすればよい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 に答える