Wie funktioniert -performSelector: withObject: afterDelay:?
Ich arbeite derzeit unter der Annahme, dass-performSelector:withObject:afterDelay:
verwendet kein Threading, sondern plant, dass ein Ereignis zu einem späteren Zeitpunkt im aktuellen Thread ausgelöst wird. Ist das richtig?
Genauer:
- (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;
}
Ist das garantiert-resetIsBad
wird erst nach aufgerufen-methodCalledByButtonClick
kehrt zurück, wenn wir auf dem Haupt-Thread laufen, auch wenn-methodCalledByButtonClick
dauert das beliebig lange?