2013-03-25 4 views
1

Я поддерживаю приложение, разработанное кем-то еще, и при его отладке у меня возникло странное поведение. при выделении объекта зрения контроллера из другого класса, он будет вызывать viewDidLoad, в viewDidLoad, я делаю вызов другим способом, в котором я заполнения массива:Почему relaodData вызывает viewDidLoad

- (void)viewDidLoad 
{ 
     [super viewDidLoad]; 
     [self fillArray]; 
} 

-(void)fillArray{ 
    arrayProduct = [[NSMutableArray alloc] init]; 
    //fill in the array from server 
    [self.objTableView reloadData];//refresh the table view 
} 

странное поведение, когда [self.objTableView reloadData]; выполняется оператор, снова вызывается viewDidLoad. Почему это происходит? Thanx заранее.

+0

Потому что вы перезагружаете таблицу в другой функции. Как только это будет сделано с этой функцией, она снова перейдет к предыдущей функции, чтобы продолжить предыдущую функцию. –

+0

Привет, я проверил это, я не перезаряжаю таблицу в другой функции. – Malloc

+0

По вашему вопросу, вы имеете в виду, что ваш вид таблицы перезагружается дважды ???? или ваша точка останова дважды появляется в функции '- (void) viewDidLoad' ???? –

ответ

0

Вы можете решить эту проблему, используя флаг.

Объявите переменную BOOL и сделайте ее правдой до вызова метода reloadData. и в viewDidLoad проверьте, истинна ли переменная, а затем не инициализируйте массив.

Надеюсь, это вам поможет.

Все самое лучшее !!!

+1

Действительно, это должно быть последнее средство. Это не нормально, когда вызов 'viewDidLoad' вызывается дважды. –

+0

А потом что ?, когда ваше представление разгружается, чтобы освободить память – EralpB