Да, NSRunLoop лучше, потому что позволяет runloop отвечать на события, пока вы ждете.Если вы просто засыпаете свою ветку, ваше приложение будет блокироваться, даже если поступят события (например, сетевые ответы, которые вы ждете).
У меня обычно такая конструкция:
while ([self isFinished] == NO) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
И затем isFinishedверните true, если вы хотите прекратить блокировку.Eith