我目前正在假设-performSelector:withObject:afterDelay:不使用线程,但安排事件在以后的日期在当前线程上触发.它是否正确?
进一步来说:
- (void) methodCalledByButtonClick {
for (id obj in array) {
[self doSomethingWithObj:obj];
}
}
static BOOL isBad = NO;
- (void) doSomethingWithObj:(id)obj {
if (isBad) {
return;
}
if ([obj isBad]) {
isBad = YES;
[self performSelector:@selector(resetIsBad) withObject:nil afterDelay:0.1];
return;
}
//Do something with obj
}
- (void) resetIsBad {
isBad = NO;
}
Run Code Online (Sandbox Code Playgroud)
假设我们在主线程上运行,即使需要任意长的时间来完成,它是否保证-resetIsBad在-methodCalledByButtonClick返回之后才会被调用-methodCalledByButtonClick?