Выполнить селектор в фоновом режиме и получить возвращаемую строку - PullRequest
2 голосов
/ 03 февраля 2011

Я пытаюсь выполнить селектор, который возвращает строку NSString в фоновом потоке, а возвращаемая строка NSString будет зависеть от входной ссылки на альбом альбома.сократить URL.

Буду очень признателен, если вы подскажете, как я могу получить возвращаемую строку.

Мой код для выполнения этого селектора:

[self performSelectorInBackground:@selector(shortenURL:) withObject:albumlink];

Ответы [ 2 ]

12 голосов
/ 03 февраля 2011

Вы можете написать другой метод в своем классе (назовем его -handleResponse:(NSString *)response), а затем из фонового процесса вы можете вызвать:

[self performSelectorOnMainThread:@selector(handleResponse:) withObject:@"My response string" waitUntilDone:NO];
8 голосов
/ 03 февраля 2011

Невозможно получить возвращаемое значение функции вне потока, в котором она выполняется. Весь смысл в том, чтобы что-то делать в фоновом потоке, состоит в том, что он извлекается из нормального потока для основного потока, поэтому для него нет места. чтобы вернуться к .. Наиболее разумный подход - создать блок, который выполняется в фоновом режиме (либо через NSOperation или GCD напрямую), который обновляет либо обновляет значение в главном потоке - если вам нужно сохранить значение позже - или который просто делает все, что вы собирались сделать со значением, если оно будет использоваться только в одной ветви кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...