Этот вопрос относится к этому . У меня есть два конструктора:
- (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, потому что они нулевые, а их нет в баннере. Но метод viewDidLoad bannerVideo вызывается ДО того, как конструктор завершил работу, а viewDidLoad bannerPreview - нет. Я добавил строковый тест в класс и 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
Как мне справиться с этим поведением?