2015-07-29 2 views
0
- (void) myFunction { 

    User *user = [[User alloc] init]; 
    user.property = @"value"; 
    [user login:@"username" password:@"pwd" delegate:nil]; 

    while (NO == user.runLoopEnd) { 
     [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; 
    } 

    [user release]; 

    ... 
} 

Я наткнулся на код выше и не понял использование While loop. Может ли кто-нибудь объяснить цель While loop в приведенном выше коде?iOS - NSRunLoop mainRunLoop use

ответ

0

Вторичные потоки умрут после выполнения назначенной задачи/метода. Хотя цикл используется для поддержания живого потока до тех пор, пока наше условие не будет выполнено.

Похоже, метод myFunction выполняется во вторичной резьбе. Хотя цикл используется для поддержания потока в потоке до тех пор, пока user.runLoopEnd не будет установлен на TRUE. Runloop периодически проверяет состояние user.runLoopEnd и продолжает цикл до его установки.

Здесь вы хотели бы сохранить вторичную резьбу до тех пор, пока метод входа не вернется с ответом. (Вероятно, метод login использует асинхронный вызов api). После того, как login api вернется, он установит user.runLoopEnd в TRUE и пока цикл будет сломан. Таким образом, поток может завершаться, когда он завершает выполнение метода.

Смежные вопросы