Как работает -performSelector: withObject: afterDelay:?

В настоящее время я работаю в предположении, что-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;
}

Гарантируется ли это, что-resetIsBad не будет называться до-methodCalledByButtonClick возвращает, предполагая, что мы работаем в главном потоке, даже если-methodCalledByButtonClick занимает сколько угодно времени, чтобы завершить?

Ответы на вопрос(2)

Ваш ответ на вопрос