我有一个需要将数据(使用POST)发送到服务器的应用程序。此功能必须位于NavigationController子 Controller 之一上,并且用户应能够远离该 Controller 导航和/或关闭应用程序(仅支持iPhone4/iOS4)。
我应该使用线程/NSOperation还是使用现有的异步方法发送数据?
有什么想法/最佳实践如何执行此操作?

最佳答案

好,我会回答我自己的问题。
首先,就像tc所说的那样,最好在应用程序委托(delegate)上进行此调用,以便可以关闭NavigationController中的View。
其次,使用beginBackgroundTaskWithExpirationHandler:标记后台处理的开始,并使用endBackgroundTask:结束它,如下所示:
。H:UIBackgroundTaskIdentifier bgTask;.m:

- (void)sendPhoto:(UIImage *)image
{
  UIApplication *app = [UIApplication sharedApplication];

  bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
  }];


  NSLog(@"Sending picture...");

  // Init async NSURLConnection

  // ....
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

  NSLog(@"Picture sent.");

  UIApplication *app = [UIApplication sharedApplication];

  if (bgTask != UIBackgroundTaskInvalid) {
    [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
  }
}
iOS终止您的应用程序还有10分钟的时间。您可以使用[app backgroundTimeRemaining]检查这次

关于iphone - 最佳做法是在iOS4设备上在后台发送大量数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3928861/

10-14 20:40
查看更多