为什么performSelector:withObject:afterDelay工作即使应用程序在后台?

时间:2015-03-20 11:19:38

标签: ios xcode background performselector

我没有使用任何特殊的背景模式。我创建了这个简单的项目:

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self performSelector:@selector(callservice) withObject:nil afterDelay:5];
}

-(void) callservice
{
    NSURLRequest * urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]];
    NSURLResponse * response = nil;
    NSError * error = nil;
    NSData * data = [NSURLConnection sendSynchronousRequest:urlRequest
                                          returningResponse:&response
                                                      error:&error];
    if (error == nil)
    {
        // Parse data here
    }
    [self performSelector:@selector(callservice) withObject:nil afterDelay:5];
}

@end

当我按下" Home Button" ,该应用程序转到后台。此时,我打开了Charles跟踪请求,我注意到该应用仍然会调用" www.google.com"每5秒钟。 (我知道在呼叫服务方法的最后我再次呼叫performselector:withobject:afterdelay,但我认为去后台会停止它,因为我没有使用任何后台模式。)我等了10分钟而应用程序仍然提出请求。 从那以后,我想在按下" Home"在模拟器中,应用程序仍在使用Xcode运行时清醒。所以我从Xcode停止了应用程序并直接从模拟器运行它。请求仍然存在。 为什么会这样? performselector:withobject:afterdelay每隔5秒唤醒应用程序一次? iOS&#34 ;?按下" Home"? 谢谢!

0 个答案:

没有答案