2012-11-02 59 views
8

队列在CBCentralManager的初始化程序中指定,-initWithDelegate:queue:CoreBluetooth委托在主队列/主线程上?

从性能角度来看,将核心蓝牙代表调度到后台线程/队列会更好吗?用户界面操作,例如跟踪平移或缩放手势,是否会干扰蓝牙?

+0

伟大的问题。我从来没有想过使用另一个队列,但我注意到我能得到的最快的消息大约是50赫兹(每20ms);比这更快,它似乎排队。 – sarfata

+0

我在使用External Accessory框架开展以前的项目时首先注意到了这一点。我只是想知道是否它也很重要使用核心蓝牙。 – ZhangChn

回答

0

异步回调的要点是,他们不需要安排时间,因为当重工作结束时他们会被调用......当然,当您的委托方法很重,这不再有效,它确实有意义移动他们到不同的队列:)

或者如果他们被称为每次secon 10000次。但除此之外,我不认为他们需要被移出主队列

+0

你似乎并不了解我的顾虑。如果您为主线程安排了一些异步回调,并且某些UI事件(例如,平移,拖动,缩放,可能在事件跟踪runloop模式中的事件)占用主线程,则回调将延迟到这些UI事件完成。 – ZhangChn

+0

为什么?他们是漫长而阻塞的吗?不这么认为..你是对的我明白你错了^^但现在看起来.. weirder:D你的意见操作不应该阻止 –

+0

@ZhangChn:你能解决你的问题吗?我也遇到同样的问题。 我能够在一个单独的线程上设置corebluetooth委托,但它仍然在主线程中调用...奇怪。 – freedom