objective-c - 关于区 block 和中央调度的问题

标签 objective-c macos cocoa grand-central-dispatch

我有一个问题找不到答案,因为我想知道我当前的代码是否正确。代码如下。

问题是关于 while 循环..这是正确的吗?

PS:Platinum uPnp 在 Start() 之后需要一个 while 循环,否则该过程将明显停止。

- (void) start {

 scan_queue = dispatch_queue_create("upnpscan.devices", NULL);

    dispatch_async(scan_queue, ^{

        PLT_CtrlPointReference ctrlPoint(new PLT_CtrlPoint());        
        BritneyMediaController controller(ctrlPoint, self);

        upnp.AddCtrlPoint(ctrlPoint);
        upnp.Start();

        [self setRunning:YES];
        while([self running]) { 

        }
        NSLog(@"Stopped running");
    });
    NSLog(@"Voor sleep");
    sleep(10);
    NSLog(@"Ik ben wakker");
    [self stop];
}

- (void) stop {

    [self setRunning:NO]; 
    return;

}

最佳答案

这看起来不对。如果您需要 while 循环,则意味着 Start() 是非阻塞的,在这种情况下它不需要位于后台线程中。您应该在主线程上运行一个运行循环并从那里开始,看起来像。

关于objective-c - 关于区 block 和中央调度的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236865/

相关文章:

ios - 如何将NSString转换为Appengine Blobstore的UIImage

objective-c - 子类化NSWindowController,我可以提供多个init方法吗?

cocoa - 在 Cocoa 中操作 NSImage 的像素

javascript - Electron 检测全局滚动事件Mac

objective-c - 关于 NSUserDefaults 的问题/问题

objective-c - 哪些方法会引发 NSInvalidArgumentException?

ios - 预期标识符或 "("Objective C

objective-c - UITextView setBorderStyle 在 iOS 5 模拟器中崩溃

ios - objective-C : Issue faced while editing multiple row simultaneously in table view

java - 为什么 JNA 的简单使用会导致 Mac OS X 上的 fork() ?