外部ライブラリからクラスを拡張しています。ここに私のコードは次のとおりです。Objective-Cカテゴリインポートの不思議な動作
ヘッダファイル:マネージャ+ MyCategory.h
#import "Manager.h"
#import "Element.h"
@interface Manager (myCategory)
- (Element*) elementWithTag:(NSInteger)tag;
@end
実装ファイル:マネージャ+ MyCategory.hファイル
@implementation Manager (myCategory)
- (Element*) elementWithTag:(NSInteger)tag {
...
}
@end
今ここで私は、このカテゴリを使用する方法です。
#import "Manager+MyCategory.h"
@implementation myClass
- (void) myFunction:(NSInteger)tag {
Manager* myManager = [[Manager alloc] init];
Element* = [myManager elementWithTag:tag];
...
[myManager release];
}
@end
コンパイルすると警告は表示されませんが、プログラムを実行すると次のエラーが表示されます。
*** -[Manager elementWithTag:]: unrecognized selector sent to instance 0x105d9a0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[Manager elementWithTag:]:
ヘッダファイル(つまり、マネージャー+ MyCategory.h)正しくインポートが、実装ファイルとのリンクが行われていないように見えています。 #import "Manager + MyCategory **。h **"を私のクラスの#import "Manager + MyCategory **。m **"で置き換えると、正しく動作しています。
私が忘れたものは誰でも説明できますか?ありがとう
ありがとう! プロジェクトに-ObjCリンカフラグを追加するだけで正常に動作します – Thomas