Objective-C中的非阻塞等待函数

Ste*_*ser 10 objective-c

我是Objective-C的新手,我无法弄清楚如何以非阻塞的方式等待.我有一个异步填充的对象,我需要等待它才能继续进行另一种方法.现在我正在使用sleep函数,但是这会阻止整个app并且myObject永远不会被加载.

while (!myObject)
{
    sleep(1);
}
return myObject;
Run Code Online (Sandbox Code Playgroud)

编辑:此代码段来自可能在加载myObject之前调用的方法.在这种情况下,我实际上想要阻止此方法,但我的代码阻止包括myObject在内的所有内容被加载.

Oli*_*ain 7

这个小桃子为我工作(按顺序延迟20秒)....

CFRunLoopRunInMode(kCFRunLoopDefaultMode, 20.0, false);
Run Code Online (Sandbox Code Playgroud)


Chu*_*uck 6

如果可以,请为类提供一个myObjectLoaded:在加载相关对象时调用的方法.否则,上面写的最常用的等价物就是创建一个定时器,它不断检查myObject并在找到它后做一些事情.

如果由于某种原因你真的需要在方法中间执行它,那么你必须创建一个继续运行runloop的循环.缺少一个导致你的应用程序阻止的runloop.