我從外部庫擴展一個類。這裏是我的代碼: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:]:
正確導入頭文件(即Manager + MyCategory.h),但看起來好像與實現文件的鏈接沒有完成。 如果我通過#import「Manager + MyCategory **。m **」替換#import「Manager + MyCategory **。h **」,它可以正常工作。
任何人都可以解釋我忘了什麼?由於
好點!但是我檢查並且Manager + MyCategory.m在目標編譯源中很好。 Thx無論如何 – Thomas 2009-07-08 18:57:31
另一個健康檢查從未受傷。嘗試在你的Manager + MyCategory.m中拋出一個#error。如果編譯器沒有失敗,你肯定知道你的類沒有被編譯。 – kperryua 2009-07-08 19:21:02
對不起,我無法幫助。我會在這裏留下答案,因爲它可能會在未來幫助其他人。祝你好運。 – 2009-07-08 19:36:41