我正在观察一种奇怪的行为。我正在执行这个方法:
- (void) aLongRunningMethod: (NSString*) input {
for (int i = 0; i < 100; ++i) {
//Sleep for 1 second
[NSThread sleepForTimeInterval: 1];
NSLog(@"Progress: %d", i);
}
}
在iOS模拟器中,我点击主页按钮。我希望线程立即被暂停。但是,这不会发生。该方法继续进行。我很确定这不是设计的行为。这是模拟器中的缺陷还是我误解了应用程序的状态转换。
答案 0 :(得分:0)
在当前/主要的runloop上运行的任何东西都有机会完成。但是操作系统保留了杀死任何东西的权利。
如果您在后台线程上执行该方法,当您按主页按钮时,它将立即暂停。
试一试:
[self performSelectorInBackground:@selector(aLongRunningMethod:) withObject:@"Running in background"];