0
在SomeViewController叫,我想使用自定義的init方法,同時禁用-initWithNibName:bundle:
:定義的另一個init方法,但initWithNibName:束仍然由系統
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
NSAssert(NO, @"use -initWithChannel:tag: instead");
return nil;
}
- (instancetype)initWithChannel:(NSString *)channel tag:(NSString *)tag
{
if (self = [super init]) {
self.channel = channel;
self.tag = tag;
}
return self;
}
但是當我打電話-initWithChannel:tag:
,-initWithNibName:bundle:
是正確的叫在-[UIViewController init]
之後,爲什麼會發生這種情況?
但爲什麼它調用我的'initWithNibName'而不是'[UIViewController initWithNibName]'? – limboy
繼承。它調用[self initWithNibName],所以如果你重寫它,它會調用你的。 – Joel
所以在super方法中,如果它調用'self',那真的是調用'parent'就是這種情況嗎? – limboy