UIViewControllerサブクラスに2つのinit関数があります。
- (id)init
{
self = [super init];
if (self)
{
// Custom stuff
return self;
}
return nil;
}
と
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName: nibNameOrNil
bundle: nibBundleOrNil];
if (self)
{
// Custom stuff
}
return self;
}
initWithNibName:bundle:メソッドの呼び出しを回避するために、init関数を挿入しました。xibファイルを取り出して実験しようとしています。残念ながら、このinit [[Myclass alloc] init]を呼び出すと、[super init]の呼び出しを通じてinitWithNibName:bundle:が呼び出されます。
まず、親のinitメソッドを呼び出して、自分のinitWithNibName:bundle:メソッドを呼び出すことを期待できるように、ドキュメントのどこを読む必要がありますか?
第二に、これはAppleの側でどのように良い設計上の選択ですか。なぜこれが望ましい動作なのかわかりませんか?(私はここで全体像を把握していない可能性があるので、遠慮なく私を手がかりにしてください。)
第三に、どうすればそれをうまく回避できますか。コードからinitWithNibName:bundle:を削除するだけですか?クラスのxibまたは手動インスタンス化のいずれかを使用するオプションが必要な場合はありません。