В моем приложении для iPhone я иногда вижу сбой, вызванный tableView: cellForRowAtIndexPath: вызывается в фоновом потоке.Почему tableView: cellForRowAtIndexPath: вызывается в фоновом потоке?
Очевидно, это не должно происходить. Я не называю это, мой объект является делегатом на UITableView и основание называть это - единственное, что я вижу в стеке для резьбы в вопросе
-_WebTryThreadLock(bool) -_dequeuReusableViewOfType -tableView:cellForRowAtIndexPath: -_createPreparedCellForGlobalRow:withIndexPath -_pthread_qathread
Катастрофа происходит в WebTryThreadLock - нет Удивительно, что это не потокобезопасно и не следует отвлекать от основной темы.
Но как выяснить, почему мой делегат tableView вызывается в фоновом потоке?
Мне интересно - если бы я должен был вызвать [tableView reloadData] в фоновом потоке, сделал бы это?
Я всегда думал, что он просто отправит вызов на главную нить. Я не уверен, что я это делаю, но могу быть, и я проверю это, но на самом деле, не должен ли UIKit проверять это и называть методы делегата в основном потоке?
Можете ли вы разместить подробный журнал аварий. Кроме того, вы включаете какие-либо сторонние структуры (вообще)? –
Вы спрашиваете: «Не должен ли UIKit проверять это?» Я могу понять, почему вы спрашиваете об этом, но простой факт заключается в том, что это не так, и вы просто должны просто обеспечить, чтобы ваши связанные с табличным вызовом вызовы выполнялись в основной очереди. – Rob
опубликуйте свой код и журнал сбоев, чтобы получить лучший ответ – Jatin