【发布时间】:2015-05-21 11:17:04
【问题描述】:
我想创建一个扩展 NSOperation 的自定义类,以便通过蓝牙与另一台设备成功通信。我的问题是如何实现该类的主要方法,以便它等待蓝牙触发的事件?
【问题讨论】:
我想创建一个扩展 NSOperation 的自定义类,以便通过蓝牙与另一台设备成功通信。我的问题是如何实现该类的主要方法,以便它等待蓝牙触发的事件?
【问题讨论】:
永远不要使用无限循环。它不节能。正如@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);
【讨论】:
我所做的只是在一段时间内使用连续循环,直到某个事件触发 BOOL 来停止循环。我不知道这是否安全,但它确实有效。
while(!self.didFinish){
;
}
【讨论】: