如何在不同线程的后台执行某些操作,如果它在主线程上执行则会阻止我的应用程序的UI.任何人都知道该怎么做?
即使它在后台打印NSLog也没关系.即使用户按下HOME按钮,我也希望运行以下内容.在我的viewController中我这样做了:
- (IBAction)btnStartClicked:(UIButton *)sender {
[NSThread detachNewThreadSelector:@selector(StartBGTask) toTarget:self withObject:nil];
}
-(void)StartBGTask{
[[[UIApplication sharedApplication] delegate] performSelector:@selector(startThread)];
}
Run Code Online (Sandbox Code Playgroud)
并在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];
}
}
}
Run Code Online (Sandbox Code Playgroud)
它以1秒的间隔打印1到100之间的整数.
我正在实施货币转移移动应用程序,因此必须获取有关特定iOS设备上唯一的信息。我必须检测SIM卡更改。
我经过很多链接如何唯一地识别ios设备
和
但它们没有用,而且如果在应用未运行时用户删除sim,则无法检测到。