我是 Objective-C/iOS 的初学者,我有一个简单的问题。
我的程序与服务器端交互,我GCDAsyncSocket
用于异步通信。
我想知道,假设用户正在打开我的状态视图控制器,这会导致对服务器的请求,但在响应到达之前,他已经移动到不同的视图!
处理这种情况的正确方法是什么?
谢谢!
我是 Objective-C/iOS 的初学者,我有一个简单的问题。
我的程序与服务器端交互,我GCDAsyncSocket
用于异步通信。
我想知道,假设用户正在打开我的状态视图控制器,这会导致对服务器的请求,但在响应到达之前,他已经移动到不同的视图!
处理这种情况的正确方法是什么?
谢谢!
理想情况下,您不应该移动到下一个视图控制器,直到您在 didReceiveData 回调中获得响应,因为您的 GCDAsyncSocket 委托必须设置为某个控制器,并且您可能默认将其设置为状态视图控制器。
所以你必须等待回调响应,在收到它后你可以移动到下一个视图控制器。
虽然代理可以设置为下一个视图控制器,但作为 iOS 初学者,您现在可以跳过它。
这是关键。
异步
您正在使用异步请求来获取数据。您必须使用回调让视图控制器知道请求已结束。我从未使用过该库,但快速浏览自述文件说:
Classic delegate-style support.
All of the following result in calls to your delegate method: connections, accepts, read completions, write completions, progress,
https://github.com/robbiehanson/CocoaAsyncSocket/blob/master/README.markdown https://github.com/robbiehanson/CocoaAsyncSocket/wiki/Reference_GCDAsyncSocket