此問題與this one有關。我有兩個構造函數:viewDidLoad在構造函數之前調用
- (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,與initWithPreview和initWithVideo初始化的兩個實例。這裏發生了什麼: 在預覽構造函數中,我無法訪問IBOutlets,因爲它們是零,而它們不在橫幅中。但bannerVideo的方法viewDidLoad在構造函數完成之前被調用,而bannerPreview的viewDidLoad不會。我在上面列出的兩種方法中添加了類的字符串測試和的NSLog(@「富」)和我的輸出是:
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
我應該如何處理這個問題?
所以...如果我必須做一些初始化處理,需要我應該只給出在構造函數啓動。對?那麼奧特萊斯呢?他們不是從[super initWithNibName:bundle:]初始化的嗎? – IssamTP 2011-03-15 13:37:51