我正在 iOS 上构建一个 VoIP 手机应用程序(使用 PJSIP 库),PJSIP 要求您注册访问它并管理其配置的线程,以实现线程安全。这意味着处理或管理对该库的调用不能由 GCD 处理,并且需要在主线程上(糟糕的解决方案,因为它会阻塞并且如果出现问题 UI 将不会绘制),或者创建自己的专用线程.
我在我的应用程序委托中创建了自己的专用线程和运行循环,并在其上执行了一些选择器,但它很混乱。我想将对当前会话的所有调用封装到我在启动时创建的单例对象中,并让所有这些调用发生在它们自己的线程中。
Apple 的文档有点稀疏,所以我试图弄清楚是否有更智能的方法来管理此 PJSIP 实例上的注册线程。见鬼,可能有一些我什至没有想到的事情。
我知道这更像是一个技术问题,但我很想看看人们提出了什么想法。
我已经在 NSThread 之上构建了一个类别,允许我在该特定线程上执行块,但这是一个丑陋丑陋的 hack。