【问题标题】:NSOperation wait for eventNSOperation 等待事件
【发布时间】:2015-05-21 11:17:04
【问题描述】:

我想创建一个扩展 NSOperation 的自定义类,以便通过蓝牙与另一台设备成功通信。我的问题是如何实现该类的主要方法,以便它等待蓝牙触发的事件?

【问题讨论】:

    标签: objective-c nsoperation


    【解决方案1】:

    永远不要使用无限循环。它不节能。正如@lead_the_zeppelin 所说,使用信号量/互斥量/等。例如,您可以使用这样的dispatch_group 函数:

    dispatch_group_t waitGroup = dispatch_group_create();
    dispatch_group_enter(waitGroup);
    dispatch_async(otherQueue, ^{
        //long-running code
        dispatch_group_leave(waitGroup);
    }
    dispatch_group_wait(waitGroup, DISPATCH_TIME_FOREVER); 
    

    【讨论】:

      【解决方案2】:

      我所做的只是在一段时间内使用连续循环,直到某个事件触发 BOOL 来停止循环。我不知道这是否安全,但它确实有效。

      while(!self.didFinish){
          ;
      }
      

      【讨论】:

      • 永远不要使用无限的while循环。使用信号量或类似的东西。
      • 你能举个例子吗?
      • 请查看 Sega-Zero 的解决方案以改为使用组调度。 Read 更多关于调度队列的信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多