0

假设我有一个 iOS 应用程序,它在视图控制器上有一个开关。我想使用此开关为用户更改服务器端的设置。因此,当用户拨动开关时,我会启动一个异步 NSURLConnection 来更改设置,服务器会响应以指示更改成功,以便应用程序的 UI 反映更改。视图控制器将具有处理响应的代码,但是如果用户在翻转开关之后但在响应返回之前更改了视图控制器,会发生什么?

4

2 回答 2

0

NSURLConnection 保留它的委托。如果委托是视图控制器并且用户导航离开视图控制器,您可能希望取消请求并在视图控制器的 dealloc 中释放它。如果你不这样做,视图控制器将不会被释放,直到连接成功或失败并调用视图控制器上的相关委托方法,因为 NSURLConnection 仍然对它有一个强引用。

于 2013-03-23T13:11:15.300 回答
0

有两种方法:

  1. 通过显示进度控制器来阻止用户。
  2. 如果您不想阻止用户,请在解除分配视图控制器时取消通信。如果您不想关闭通信,请将委托对象更改为某个全局对象。一旦通信完成,此对象将传递通知。
于 2013-03-23T12:42:13.980 回答