如何在一段时间后触发委托方法?

时间:2010-12-15 15:31:02

标签: iphone objective-c ios nstimer nsnotification

我正在使用一个异步下载文件的类..有点像这样

// in AViewController.m
DataGetter *blueFile = [[DataGetter alloc] init];
blueFile.delegate = self;
[blueFile getData:@"http://example.com/blue-file"];

它有一个委托方法,可以在下载后对文件执行操作

- (void) dataGetterFinished:(DataGetter *)dataGetter
{
// code
}

这在理想条件下工作正常,但是当我们处理移动设备时,连接并不总是可靠的。连接可能会在中途中断,或者可能非常慢。

所以我想知道如何设置一个委托方法,该方法在10秒之后触发,然后显示错误并停止操作。我是否必须使用NSTimer,或NSNotification或某种组合?

1 个答案:

答案 0 :(得分:1)

奎因“爱斯基摩人!”来自Apple在WWDC 2010上为iPhone进行了两次关于iPhone网络编程的会谈。会议207和208,你可以在这里下载:http://developer.apple.com/videos/wwdc/2010/

网络成功的简单接收是:

  1. 异步使用NSURLConnection
  2. 使用定时器或任何其他方式设置手动超时,默认设置是合理的。
  3. 而是准备处理connection:didFailWithError:,这将被发送超时。
  4. 如果需要,您可以使用-[NSURLConnection cancel]手动取消连接,以响应用户操作。