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
Apple의 샘플 코드는 performSelectorOnMainThread : withObject : waitUntilDone을 사용합니다. 처리기 메서드가 임의의 큐에서 수행된다는 사실을 처리합니다. – sam