Ben veriler içeren bir UITableViewController yüklemek için twitter hesaplarının bir listesini almaya çalışıyorum. Bu fonksiyonu kullanmak: Nedense(iOS 5), TableView kapatır?
- (void)viewDidLoad {
[accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
...
[[self tableView] insertRowsAtIndexPaths ...];
[[self tableView] reloadData];
NSLog("This message appears immediately");
...
}];
NSLog("This message appears immediately");
}
, arayüz aslında/yeniden çizilir güncellenir masanın önce 5 saniye boyunca "askıda" gibi görünüyor (reloadData çağırarak AM unutmayın!). Tüm günlük iletilerim hemen yazdırılıyor, bu yüzden arabirimin donmasına neden olan şeyden emin değilim.
mesele UI çağrıları ana iş parçacığı üzerinde olmak zorunda olması ve '-requestAccessToAccountsWithType: withCompletionHandler:' tamamlanma blok ana iş parçacığı üzerinde çağrılıp olacağını garanti etmez. Eğer kullanıcı arayüzü o zaman 'dispatch_async' aramadan önce arka plan kuyrukta bunu serbestçe yapabilirsiniz çağırmadan önce yapmak için daha fazla işleme varsa gerçi dispatch_async'' kullanımınız, burada doğrudur. –
Teşekkürler dostum, başka bir görüş gecikme ile aynı sorunu vardı. Bu benim için çözdü. withObject: waitUntilDone: – thgc
Apple'ın örnek kod performSelectorOnMainThread kullanan işleyicisi yöntemi keyfi bir kuyruğa üzerinde gerçekleştirilen gerçeği ile başa çıkmak için. – sam