私は私のUIViewControllerのサブクラスで2つの初期化機能を持っている:私は避けることでinit関数を入れのUIViewController:[スーパーのinit] [自己initWithNibNameバンドル:]を呼び出す
- (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:メソッドを呼び出します。私はxibファイルを取り出して実験しようとしています。残念ながら、このinit [[Myclass alloc] init]を呼び出すと、[super init]の呼び出しによってinitWithNibName:bundle:が呼び出されます。
最初に、親initメソッドの呼び出しが自分自身のinitWithNibName:bundle:メソッドを呼び出すと予想されるように、ドキュメントのどこを読んでおくべきですか?
第2に、これはAppleの面でどのように優れた設計の選択ですか。なぜこれが望ましい行動であるのか見ていないのですか? (私はここで大きな画像を取得していない可能性がありますので、私に手がかりをつけてください)
第3に、私はどのように最善を尽くすのですか?私はinitWithNibName:bundle:をコードから取り出すだけですか? xibやクラスのマニュアルインスタンス化を使用するオプションが必要な場合はありません。
- (id)init関数に確実に到達していますか?ヘッダーファイルにもあなたのinit関数を宣言しましたか? – Snaker
@snaker -initはNSObject自体から来ます。宣言する必要はありません。 – CodaFi