我在我的 iPhone 应用程序中使用AsyncUDPSocket第三方库,并且在大多数情况下它工作得很好。我有一个AsyncUDPSocket
用于所有网络流量的单例实例。我的应用程序在后台注册了位置跟踪,并且在后台运行时将唤醒并通过网络发送位置更新数据包。这一切都在后台,前台,手机锁定或解锁中运行,除非我执行以下操作:
- 启动我的应用
- 在我的应用设置中禁用位置跟踪(因此没有后台唤醒)
- 按下主页按钮(应用程序进入后台,套接字与应用程序的其余部分“冻干”)
- 锁定手机
- 解锁手机
- 简历应用
- 尝试重新启动跟踪并从套接字发送一些东西。我一尝试,就会收到
SIGPIPE
/EPIPE
错误并且应用程序崩溃。
我认为处理此问题的最佳方法是在应用程序退出且未启用后台跟踪时关闭并释放套接字,但是当我尝试[socket close]
或[socket release]
打开时AsyncUDPSocket
,我会收到各种EXC_BAD_ACCESS
错误。我已经向开发团队提交了一个错误,但想知道这里是否有人可以就如何SIGPIPE
完全避免错误或其他方式在不释放套接字的情况下保持套接字存活提出一些想法。谢谢。