2011-10-27 2 views

답변

20
[self.tableView performSelectorOnMainThread:@selector(reloadData) 
           withObject:nil 
           waitUntilDone:NO]; 
+1

이 줄을 복사하려면 여기로 왔습니다 :). Tq –

1

어떻게 이런 일에 대해?

- (void) callReloadData 
{ 
    if ([NSThread isMainThread]) { 
     @synchronized (self.tableView) { 
      [self.tableView reloadData]; 
     } 
    } else { 
     [self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 
    } 
} 
+1

'performSelectorOnMainThread :'는'waitUntilDone :'이 YES이면 즉시 selector를 호출 할 것이므로이 코드는 무의미하다. (왜'@synchronized' 블록을 던지기로 결정했는지 모르겠다.) – titaniumdecoy

7

당신은 파견 비동기을 사용할 수 있습니다 (컴파일하지 않을 수 있습니다, 나는 그것을 입력하고는),이 방법은 사용 인라인 코드 블록이 아닌 방법으로 작업자 스레드를 마샬링하는 performSelectorOnMainThread 수 있습니다 :

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.tableview reloadData]; 
});' 
관련 문제