код, который вы разместили, не содержит достаточно информации, чтобы мы могли дать конкретный ответ.Скорее всего, методы не вызываются в том порядке, в котором вы их ожидаете (например, populateArray вызывается из другой точки перед viewDidLoad).
Некоторые утверждения должны помочь диагностировать это:
//Populate array
-(void)populateArray
{
assert(nil != self.textArray && "you need to create an array");
[self.textArray addObject:@"Text1"];
[self.textArray addObject:@"Text2"];
[self.textArray addObject:@"Text3"];
[self.textArray addObject:@"Text4"];
[self.textArray addObject:@"Text5"];
assert(5 == [self.textArray count] && "populateArray has been called twice or serious threading error");
NSLog(@"%@",textArray);
NSLog(@"%@",[textArray objectAtIndex:1]);
}
-(void)viewDidLoad
{
assert(nil == self.textArray && "you need to clear your array (e.g. in viewDidUnload) or check if it has already been populated");
self.textArray = [NSMutableArray array];
[self populateArray];
assert(5 == [self.textArray count] && "populateArray has been called twice or serious threading error");
}
наконецЕсли этот массив никогда не изменится, будет гораздо проще создать его в инициализаторе, чем лениво.такой массив не потребует большого объема памяти, в случае, если вас это беспокоит.
Обновление конструкция принимает следующий вид:
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
{
self = [super initWithNibName:nibName bundle:nibBundle];
if (nil != self){
textArray = [[NSArray alloc] initWithObjects:@"Text1", @"Text2", @"Text3", @"Text4", @"Text5", nil];
// ...
}
return self;
}
наконец, viewDidLoad
можетбезусловно, будет вызываться несколько раз на одном и том же экземпляре.система выгружает (затем лениво перезагружает) представления в условиях нехватки памяти.