我添加了兩類RegisterViewController。他們有相同的func命名爲djTest。象下面這樣:如何在Objective-C中處理基類中兩個相同的方法?
NewRegisterViewController + TestA.h
@interface NewRegisterViewController (TestA)
-(void)djTest;
@end
NewRegisterViewController + TestA.m
@implementation NewRegisterViewController (TestA)
-(void)djTest{
NSLog(@"djTest call TestA");
}
@end
NewRegisterViewController + TestB.h
@interface NewRegisterViewController (TestB)
-(void)djTest;
@end
NewRegisterViewController + TestB.m
@implementation NewRegisterViewController (TestB)
-(void)djTest{
NSLog(@"djTest call TestB");
}
@end
,並在NewRegisterViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
if ([self respondsToSelector:@selector(djTest)]) {
[self performSelector:@selector(djTest)];
}
}
,每天當我運行時輸出 「djTest呼叫泰斯塔」 控制檯。
我的問題是:
的時候我並沒有在NewRegisterViewController.m導入NewRegisterViewController + TestA.h,也djTest功能可以找到並執行。那麼這個函數何時添加到NewRegisterViewController實例中。當類加載?或者第一次使用籠子或其他時間?
我導入了NewRegisterViewController + TestA.h和NewRegisterViewController + TestB.h,編譯器確實給了我多個djTest函數的警告。那麼如何避免不同類別中的多重功能?總是我不知道其他暗示這個功能。
這對我來說要求TESTB的功能。不是A.請參閱示例[here](https://www.dropbox.com/s/ly9n5xq6wraw9qg/CategoryTest.zip?dl=0) – iphonic
對於給定的類,在Objective C中不可能有兩個具有相同名稱的類別。在運行期間,任何一個方法都會被調用。 –
@iphonic可能取決於哪種方法最後添加。所以我的第一個問題是它何時添加。 – qiushuitian