目标C - 阻止问题?

ary*_*axt 1 objective-c grand-central-dispatch objective-c-blocks

我有以下方法

+ (NSString*)getMeMyString
{
   NSString *result;
   dispatch_async(dispatch_get_main_queue(), ^{
        result = [ClassNotThreadSafe getString];
    });
   return result;
}
Run Code Online (Sandbox Code Playgroud)

如何让块同步执行它的工作,以便它在返回之前不返回结果?

Joe*_*Joe 5

您正在调用dispatch_async异步调度块.尝试使用dispatch_sync或者dispatch_main如果您的目标是阻止主线程.

+ (NSString*)getMeMyString
{
   __block NSString *result;
   dispatch_sync(dispatch_get_main_queue(), ^{
        result = [ClassNotThreadSafe getString];
    });
   return result;
}
Run Code Online (Sandbox Code Playgroud)

Grand Central Dispatch Reference