¿Cómo funciona -performSelector: withObject: afterDelay: work?
Actualmente estoy trabajando bajo el supuesto de que-performSelector:withObject:afterDelay:
no utiliza subprocesos, pero programa un evento para activarse en una fecha posterior en el subproceso actual. ¿Es esto correcto?
Más específicamente:
- (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;
}
Esta garantizado que-resetIsBad
no se llamará hasta después-methodCalledByButtonClick
devuelve, asumiendo que estamos ejecutando en el hilo principal, incluso si-methodCalledByButtonClick
Toma un tiempo arbitrariamente largo para completar?