2015-10-29 3 views
0

В моем диспетчере ViewController я загружаю данные TableView с сервера mySQL в Интернете. Когда я нажимаю кнопку, загружающую ViewController, для загрузки ViewController требуется время.Загрузка ViewController перед загрузкой данных IOS

Хотя мои данные вызывается после метода viewDidLoad ..

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    MyArray = [[NSMutableArray alloc]initWithCapacity:10]; 
    MyData = [NSUserDefaults standardUserDefaults]; 

    MySqlDataBase *mySql = [[MySqlDataBase alloc]init]; 
    MyArray = [mySql doQueryGetArray:@"SELECT * FROM member" ForDataBaseWithName:@"Estifta"]; 
    NSLog(@"%@",[[MyArray objectAtIndex:0]objectForKey:@"text"]); 
    [_myTabeView reloadData]; 
} 
+0

Что именно ваша проблема? – longbow

ответ

0

viewDidLoad вызывается, когда ваш взгляд загружается в память, но перед тем отображается вид на экране. Ваш код в viewDidLoad запускается на mainThread (UIThread) и поэтому замедляет отображение вида на экране.

В качестве решения вы можете отправить длинные части в фоновом режиме (используя dispatch_async), а затем перезагрузить таблицу в основной теме.

__weak typeof(self) weakSelf = self; 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
MySqlDataBase *mySql = [[MySqlDataBase alloc]init];   
MyArray = [mySql doQueryGetArray:@"SELECT * FROM member" ForDataBaseWithName:@"Estifta"]; 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [weakSelf.myTabeView reloadData]; 
     }); 
    }); 
+0

Вам не нужна слабая ссылка на 'self' здесь. – rmaddy

+0

@rmaddy - Я думаю, это зависит от продолжительности запроса async SQL. В некоторых случаях может случиться так, что мы держим сильную ссылку на * self * дольше, чем это необходимо. Поэтому я думаю, что немного чище иметь только слабую ссылку на себя. – blacky85

+0

Хорошая точка. Если диспетчер представлений отклоняется до завершения запроса, это было бы хорошей причиной для использования слабого я. Я просто думал о его использовании, чтобы предотвратить цикл ссылок, который не является проблемой с этим кодом. – rmaddy

Смежные вопросы