以下はObjectiveCで機能しています。
// Base Class in ClassA.h and ClassA.m
@interface ClassA : NSObject
- (NSString *) myMethod;
@end
@implementation ClassA
- (NSString*) myMethod { return @"A"; }
@end
//Category in ClassA+CategoryB.h and ClassA+CategoryB.m
@interface ClassA (CategoryB)
- (NSString *) myMethod;
@end
@implementation ClassA (CategoryB)
- (NSString*) myMethod { return @"B"; }
@end
問題は、ClassA.hをインポートしてメッセージを送信するだけの場合です。
[myClassA myMethod]; //returns B
なぜこれが戻ってくるのB
ですか?ClassA+CategoryBをインポートしていません
私が次のことをした場合、さらに総統:
// Base Class in ClassA.h and ClassA.m
@interface ClassA : NSObject
- (NSString *) myMethod;
- (NSString *) mySecondMethod;
@end
@implementation ClassA
- (NSString*) myMethod { return @"A"; }
- (NSString *) mySecondMethod { return [self myMethod]; }
@end
//Category in ClassA+CategoryB.h and ClassA+CategoryB.m
@interface ClassA (CategoryB)
- (NSString *) myMethod;
@end
@implementation ClassA (CategoryB)
- (NSString*) myMethod { return @"B"; }
@end
mySecondMethodを呼び出します。
ClassA *a = [[ClassA alloc] init];
NSLog(@"%@",[a myMethod]);
B
カテゴリの実装については(インポートがないため)誰も知りませんが、結果はまだ残りますか?!
B
カテゴリをインポートしていた場合にのみ戻ることを除いて、 ...
だからどんなヒントもありがたい。