この質問はこれに関連しています。私には2つのコンストラクターがあります:
- (id)initWithBanner:(NSMutableArray *)banners {
if ( self = [super initWithNibName:@"UIBanner" bundle:nil] ) {
testString = [[NSString alloc] initWithString:@"Banner"];
NSLog(@"Foo");
}
return self;
}
- (id)initWithPreview:(NSMutableArray *)previews {
if ( self = [super initWithNibName:@"UIBanner" bundle:nil];
testString = [[NSString alloc] initWithString:@"Preview"];
NSLog(@"Foo");
}
return self;
}
- (void)viewDidLoad {
NSLog(@"%@", testString);
}
別のオブジェクトには、*bannerPreviewと*bannerVideoというこのクラスの2つのインスタンスがあり、initWithPreviewとinitWithVideoで初期化されています。何が起こるか:プレビューコンストラクターでは、バナーにない間はnilであるため、IBOutletsにアクセスできません。ただし、bannerVideoのメソッドviewDidLoadは、コンストラクターが終了する前に呼び出されますが、bannerPreviewのviewDidLoadは呼び出されません。クラスに文字列テストを追加し、上記の2つのメソッドにNSLog(@ "Foo")を追加しました。出力は次のとおりです。
2011-03-15 12:29:13.929 iUDC[2600:207] Foo
2011-03-15 12:29:13.934 iUDC[2600:207] preview
2011-03-15 12:29:15.038 iUDC[2600:207] (null)
2011-03-15 12:29:15.038 iUDC[2600:207] Foo
この動作をどのように処理する必要がありますか?