8
私は、データを含むUITableViewControllerを読み込むツイッターアカウントのリストを取得しようとしています。私はこの機能を使用します。何らかの理由で(iOS 5)Twitterアカウントのリストを取得すると、TableViewがハングアップしますか?
- (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");
}
を、インターフェイスは実際に/再描画更新されるテーブルの前に5秒間「ハング」のようです(私はreloadDataを呼び出していることに注意してください!)。すべてのログメッセージがすぐに印刷されるので、インターフェイスがフリーズする原因はわかりません。
メインスレッドでUIコールが発生しなければならず、 '-requestAccessToAccountsWithType:withCompletionHandler:'は、その完了ブロックがメインスレッドで呼び出されることを保証しません。 'dispatch_async'の使用はここでは正しいですが、あなたのUIが呼び出される前にもっと処理が必要な場合は、' dispatch_async'呼び出しの前にバックグラウンドのキューで自由に行うことができます。 –
おかげで、別のビューで同じ問題が発生しました。これは私のためにそれを解決しました。 – thgc
アップルのサンプルコードでは、performSelectorOnMainThread:withObject:waitUntilDoneを使用しています。ハンドラメソッドが任意のキューで実行されるという事実に対処するためです。 – sam