내 iPhone 앱에서 tableView : cellForRowAtIndexPath : 백그라운드 스레드에서 호출되는 경우가 종종 발생합니다.왜 tableView가 : cellForRowAtIndexPath : 백그라운드 스레드에서 호출되고 있습니까?
분명히, 이것은 일어나지 않아야합니다. 나는 문제의 스레드에 대한 스택에서 볼 수있는 유일한 것은 충돌이 WebTryThreadLock에서 발생
-_WebTryThreadLock(bool) -_dequeuReusableViewOfType -tableView:cellForRowAtIndexPath: -_createPreparedCellForGlobalRow:withIndexPath -_pthread_qathread
입니다 - - 내 객체가 jQuery과에 위임하고 기초가 호출되고, 그것을 호출 아니에요 없음 정말 놀랍지 만 스레드 세이프가 아니기 때문에 메인 스레드에서 호출해서는 안됩니다.
하지만 내 tableView 대리인이 백그라운드 스레드에서 호출되는 이유는 무엇입니까?
나는 배경 스레드에서 [tableView reloadData]를 호출하면 그렇게 할까?
필자는 항상 주 스레드에 상관없이 호출을 전달할 것이라고 생각했습니다. 나는 그 일을 잘하고 있는지 확신 할 수는 없지만 나는 그것을 점검 할 것이다. 그러나 실제로, UIKit이이를 확인하고 주 스레드에서 대리자 메서드를 호출해서는 안된다.
자세한 충돌 로그를 게시 할 수 있습니까? 또한 타사 프레임 워크를 포함하고 있습니까? –
당신은 "UIKit이 그걸 확인해서는 안되니?"라고 묻습니다. 나는 당신이 왜 그것을 묻는 지 이해할 수있다. 그러나 단순한 사실은 그렇지 않다는 것이며, 단순히 테이블 뷰 관련 호출이 메인 큐에서 수행되는지를 확인해야한다는 것이다. – Rob
코드를 게시하고 더 나은 답변을 얻으려면 로그를 닫으십시오. – Jatin