Tag: objective c block

如何在NSOperation中实现一个NSRunLoop

我张贴这个问题,因为我已经看到了很多关于这个话题的困惑,因此我花了几个小时debuggingNSOperation子类。 问题是,当你执行asynchronous方法时,NSOperation不会对你有太大的帮助,在asynchronouscallback完成之前,这些方法实际上并不完整。 如果NSOperation本身就是callback委托,那么由于在不同线程上发生的callback,可能不足以正确完成操作。 比方说,你在主线程,你创build一个NSOperation并将其添加到一个NSOperationQueue NSOperation内的代码触发一个asynchronous调用,调用回AppDelegate或视图控制器上的某些方法。 你不能阻止主线程或用户界面将locking,所以你有两个select。 1)创build一个NSOperation并将其添加到NSOperationQueue中,签名如下: [NSOperationQueue addOperations:@ [myOp] waitUntilFinished:?] 祝你好运。 asynchronous操作通常需要一个runloop,所以它不会工作,除非你inheritanceNSOperation或者使用一个块,但是如果你必须在callback完成的时候告诉它“完成”NSOperation,那么块就不会工作。 所以…你用类似于下面的东西来NSOperation的子类,所以callback可以告诉操作完成后: //you create an NSOperation subclass it includes a main method that //keeps the runloop going as follows //your NSOperation subclass has a BOOL field called "complete" -(void) main { NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; //I do some stuff which has async […]