目前,当我打开一个NSInputStream(例如)时,我可以将其设置为获得一个表明它已完全打开的事件.但如果它失败了,根本就没有事件.我从未被告知开幕未能完成.我可以在尝试打开时进行轮询,但是我必须在很长一段时间内绑定一个线程.
我想要做的是编写有效的代码,等待流打开或无法打开.使用NSStream等有没有这样的方式?
我还想过创建一个我可以等待一段时间的事件.如果连接成功,事件将发出信号并弹出我的等待状态.如果超时发生,我可以测试状态并查看它是否失败或再次返回等待状态.但当然这是计划B,不是雄辩而且效率不高.通过CocoaTouch文档查看并不清楚如何创建这样一个我可以等待超时的信号.
任何帮助,将不胜感激.
当NSStream打开失败时会发生一个事件:NSStreamEventErrorOccurred.您遇到的问题可能是TCP/IP超时可能很长.因此,如果与主机的连接失败,则可能需要30秒才能收到此事件.
您可以NSTimer在打开流的同时启动一个较短的间隔,但是那时您遇到了该间隔应该是什么的问题?
除非发生TCP/IP超时,否则通常最好保留取消用户手中连接的选项.
我在许多项目中所做的是在大约1秒钟后弹出一个带有活动指示器和取消按钮的自定义模态视图.本地网络上的许多连接将在此之前完成,用户不会被弹出窗口打扰.对于较慢的连接,这允许用户决定他们愿意等待多长时间.您甚至可以在一段较长的时间后更新模态视图中的消息,表示连接时间比平时要长,因此他们知道程序知道他们正在等待!
| 归档时间: |
|
| 查看次数: |
2972 次 |
| 最近记录: |