最近,我一直在研究蓝牙框架,并掌握了足够的知识来开始构建应用程序。 唯一的问题是,我找到的所有示例和所有实践都包含将蓝牙核心代码与与用户进行交互的UIView放在同一文件中。
我希望我的未来应用程序具有BLE扫描在后台进行的多个视图。 最初,我考虑过创建一个名称类似于bleDeviceFinder
的对象,然后将该对象传递给每个视图。 但是,在考虑之后,我意识到,如果我想在当前视图中发生某些事情,我需要函数didDiscoverPeripheral
可以直接访问应该影响的UIView
对象。
我知道这可能是一个愚蠢的问题,最好的方法是什么? 我在想也许要设置并发出警报,并让每个视图都订阅该警报。 这是一个好的解决方案吗?
您在应用中传递的准单例BTLEManager。 它为发现之类的事件发送NSNotifications,并且您的ViewController会观察这些通知。 事实(即发现的设备列表)保留在BTLEManager中。 一旦viewController收到了这样的通知,它将向BTLEManager询问当前设备的列表,然后viewController相应地更改您的视图。 视图绝不能直接与BTLEManager对话。
我就是那样做的。