iOS: нужно ли копировать результаты из NSAutoreleasePool поискового потока в основной поток? - PullRequest
0 голосов
/ 15 ноября 2011

Я порождаю поток для поиска данных из веб-службы (SOAP) в моем приложении для iPad.Ответ анализируется в NSArray с объектами-членами NSDictionary.Если я вызываю мой сервис и выполняю синтаксический анализ синхронно, он работает как положено.Теперь мне нужно запустить фоновый поток, и когда lookup-поток освобождает свой пул и UITableView моего основного потока пытается отобразить данные (вызывается reloadData), я получаю прерывание из основного потока.

Я предполагаю, что проанализированные результаты были получены при сливе из пула.Нужно ли копировать из одной зоны в другую?Это большая структура, и ее глубокая копия будет дорогой.

Как еще можно получить фоновый поток для безопасного создания источника данных для моего UITableView в основном потоке?

Ответы [ 2 ]

1 голос
/ 26 июля 2013

Вы должны сохранить объект в фоновом потоке, а затем освободить его в основном потоке, как только вы закончите его использовать.

0 голосов
/ 15 ноября 2011

Вам, вероятно, нужно вызвать [NSObject performSelectorOnMainThread:withObject:waitUntilDone:] непосредственно перед тем, как ваш поток истощит свой пул, чтобы передать результаты обратно в основной поток.В зависимости от того, как структурировано ваше приложение, NSObject может быть вашим viewController, а ваш selector будет некоторым методом на вашем viewController.

...