gpt4 book ai didi

ios - Firebase signInWithEmail 函数是否在主线程中运行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:30:42 27 4
gpt4 key购买 nike

当我运行以下代码时:


[[FIRAuth auth] signInWithEmail:@"myemail@mydomain.com"
password:@"hdfjhfjhdbf"
completion:^(FIRUser *user, NSError *error) {

NSLog(@"I am in Block");
}];
NSLog(@"I am here");

我的输出是:我在这里我在街区这意味着 FIRAuth block 在主线程以外的另一个线程中运行。我在代码中添加了额外的一行(同时无限循环)


[[FIRAuth auth] signInWithEmail:@"myemail@mydomain.com"
password:@"hdfjhfjhdbf"
completion:^(FIRUser *user, NSError *error) {

NSLog(@"I am in Block");
}];
NSLog(@"I am here");
while (YES) {};

我的输出是:我在这里

问题:如果 FIRAuth block 在另一个线程中运行,它应该打印“我在 block 中”,无论我们在主线程中是否有无限循环。这怎么可能?FIRAuth block 是否在同一个主线程中以较低的优先级运行?

最佳答案

通常在 Firebase 中我们:

  • 在单独的线程中运行与网络和磁盘交互的操作

  • 在主线程上返回回调,以便您的代码可以与 UI 交互

我没有验证这个具体案例,但希望它能正常工作。这意味着您的无限循环正在阻止执行完成 block 。

如果您想等待结果,请按照此处所述使用信号量:How do I wait for an asynchronously dispatched block to finish?

关于ios - Firebase signInWithEmail 函数是否在主线程中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37914620/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com