connectionDidFinishLoading

connectionDidFinishLoading

我正在尝试使用异步类型将URL发布到服务器

_urlConn = [[NSURLConnection alloc] initWithRequest:_urlReq delegate: self];

我得到了正确的响应,并且使用didRecieveResponse和connectionDidFinishLoading等委托(delegate)方法很好地处理了响应。到目前为止,该流程工作正常。我面临着一个新问题,我不清楚。

可以说我有一个按钮,它将发布相同的URL。
  • 我单击按钮以发布URL
  • 当再次单击按钮时(在一秒/两秒内),URL不会
    发布(我有书面逻辑)。
  • URL已发布(单击拳头按钮),但我没有收到
    到现在为止没有任何回应,现在我尝试再次单击该按钮
    现在将发布网址。

  • 我的应用程序正好在这里。是因为我在_ReleaseObject(_urlConn);方法中使用了connectionDidFinishLoading吗?

    最佳答案

    使用委托(delegate)回调时,需要非常小心。

    在此示例中,单个对象是两个同时存在的NSURLConnection对象的委托(delegate)。这是一个坏主意。除非您开发了将特定连接与适当的响应数据对象相关联的方法,否则最终将混合响应数据。在这种情况下,使用_urlConn(我认为是iVar)而不是使用连接(传递给-connectionDidFinishLoading:的参数)会使情况变得更糟。

    为了简化所有这些操作,您需要要么在现有请求待处理时不发出新请求,要么需要在开始新请求之前将旧请求cancel

    10-06 03:11