NSThread вызывает функцию делегирования потоков - PullRequest
1 голос
/ 25 февраля 2010

Я использую фреймворк для получения информации из сети. Проблема в том, что функция, которую я использую для получения информации, является многопоточной (т.е. она предоставляет информацию через селектор didFinish, а не фактическую функцию в качестве возвращаемого значения).

Я хочу создать отдельный NSThread, который использует эту многопоточную функцию. Проблема в том, что если я отсоединю поток, он не будет ждать информацию из этой многопоточной функции (и не будет знать, когда информация будет отправлена ​​обратно).

Есть ли способ исправить эту ситуацию? Короче говоря, я хочу превратить асинхронную функцию в синхронную функцию.

1 Ответ

2 голосов
/ 25 февраля 2010

Вы хотите прочитать о NSRunLoop и Руководство по программированию потоков

Я думаю, что базовый подход будет примерно таким:

  • В вашей отдельной нити основной корпус
    • установить себя как пользовательский источник ввода для runloop
    • пока ваше состояние не выполнено, запустите runloop
  • В didFinish:
    • установить состояние, которое говорит, что вы сделали
    • сообщить runloop, что источник ввода (сам) сработал
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...