ОК, вот код.Объектив-C Блок: возвращает переменную __block из блока внутри
NSObject* (^executableBlock)(void) = ^NSObject*() {
__block NSObject *refObj = nil;
[Utility performAction:^() {
if (conditionA)
refObj = fooA;
else
refObj = fooB;
};
return refObj;
};
NSObject *result = executableBlock(); // result is nil
После выполнения executableBlock, результат равен нулю и performAction блок не будет выполняться немедленно и возвращается мое предполагаемое значение.
Я знаю, что блок executeAction выполняется в другом потоке и использует общий указатель nil refObj. См. Working with Blocks.
Вот мой сквозной, если я использую GCD для вызова блока performAction и жду его завершения, как его переписать? Благодаря!
Спасибо за ваши советы, я только что нашел ответ после поиска ключевых слов ** dispatch_semaphore_create **. Ссылка: http://stackoverflow.com/a/4326754/1677041 – Itachi