我正在尝试在应用程序终止之前发布一些数据。我是通过使用CFStreamCreatePairWithSocketToCFHost生成套接字来实现这一点的,稍后我会有读写的回调。
但我无法发布任何数据。它遍历所有功能但不进入回调。这对任何人都有意义吗?反正有没有让这个工作?
谢谢, Sowri
答案 0 :(得分:2)
是的,在调用applicationWillTerminate之后,不再有运行循环的迭代。由于CFSocket和CFStream都使用运行循环来管理套接字并通过回调提供数据,因此这不起作用。此外,非常重要的是要注意应用程序可能会在此阶段限制执行某些操作,并且如果您的应用程序未终止,操作系统将终止该应用程序。将一个小日志写入数据库然后在下次应用程序启动时发回该信息可能是一个更好的主意。
答案 1 :(得分:0)
我的直觉是,在applicationWillTerminate方法完成之后,它将停止整个应用程序,而不给任何其他运行循环执行的机会,更不用说做回调了。所以我的猜测是,在applicationWillTerminate中调用异步方法甚至都不会启动。那时候你才开始建立网络已经太晚了。
答案 2 :(得分:0)
applicationWillTerminate:回调是不是进行任何关键操作的地方,因为顾名思义,您的应用程序将终止,它不会等待您的代码完成某事。
你想发布什么;如果您解释为什么要这样做,我们可以提供更好的解决方案。