如何在不同的线程上执行某些后台操作,如果在主线程上执行,则会阻塞我的应用程序UI。有没有任何想法如何做到这一点?即使在后台打印NSLog也可以。
我想运行以下内容,即使用户按下HOME按钮也可以。
在我的viewController中,我做了这个:
- (IBAction)btnStartClicked:(UIButton *)sender {
[NSThread detachNewThreadSelector:@selector(StartBGTask) toTarget:self withObject:nil];
}
-(void)StartBGTask{
[[[UIApplication sharedApplication] delegate] performSelector:@selector(startThread)];
}
我在appDelegate.m文件中有以下方法:
-(void) startThread {
@autoreleasepool {
for (int i = 0; i < 100; i++) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"current progress %d", i);
});
[NSThread sleepForTimeInterval:1];
}
}
}
该程序每隔1秒输出从1到100的整数。