iOS - NSRunLoop mainRunLoop使用

时间:2015-07-29 06:10:54

标签: ios xcode nsrunloop mainrunloop

- (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的目的吗?

1 个答案:

答案 0 :(得分:0)

辅助线程在执行分配的任务/方法后将死亡。 while循环用于保持线程处于活动状态,直到满足条件为止。

似乎myFunction方法在辅助线程中执行。 while循环用于使线程保持活动状态,直到user.runLoopEnd设置为TRUE。 Runloop定期检查user.runLoopEnd条件并继续循环直到设置完毕。

在这里,您希望保持辅助线程保持活动状态,直到登录方法返回响应。 (我猜登录方法使用异步api调用)。登录api返回后,它将user.runLoopEnd设置为TRUE,while循环将被破坏。因此线程可以在完成方法执行时终止。