如何在不同线程的后台执行某些操作,如果它在主线程上执行,它会阻塞我的应用程序的 UI。有人知道怎么做吗?
即使它在后台打印 NSLog 也可以。即使用户按下 HOME 按钮,我也想运行以下内容。在我的视图控制器中,我这样做了:
- (IBAction)btnStartClicked:(UIButton *)sender {
[NSThread detachNewThreadSelector:@selector(StartBGTask) toTarget:self withObject:nil];
}
-(void)StartBGTask{
[[[UIApplication sharedApplication] delegate] performSelector:@selector(startThread)];
}
并且在 appDelegate.mi 中有这个方法
-(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 的整数。