我正在尝试使用异步类型将URL发布到服务器
_urlConn = [[NSURLConnection alloc] initWithRequest:_urlReq delegate: self];
我得到了正确的响应,并且使用didRecieveResponse和connectionDidFinishLoading等委托(delegate)方法很好地处理了响应。到目前为止,该流程工作正常。我面临着一个新问题,我不清楚。
可以说我有一个按钮,它将发布相同的URL。
发布(我有书面逻辑)。
到现在为止没有任何回应,现在我尝试再次单击该按钮
现在将发布网址。
我的应用程序正好在这里。是因为我在
_ReleaseObject(_urlConn);
方法中使用了connectionDidFinishLoading
吗? 最佳答案
使用委托(delegate)回调时,需要非常小心。
在此示例中,单个对象是两个同时存在的NSURLConnection对象的委托(delegate)。这是一个坏主意。除非您开发了将特定连接与适当的响应数据对象相关联的方法,否则最终将混合响应数据。在这种情况下,使用_urlConn(我认为是iVar)而不是使用连接(传递给-connectionDidFinishLoading:
的参数)会使情况变得更糟。
为了简化所有这些操作,您需要要么在现有请求待处理时不发出新请求,要么需要在开始新请求之前将旧请求cancel。