菜鸟教程小白 发表于 2022-12-12 20:50:14

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


                                            <p><p>当我运行以下代码时:</p>

<hr/>

<pre><code>[ signInWithEmail:@&#34;[email protected]&#34;
                           password:@&#34;hdfjhfjhdbf&#34;
                         completion:^(FIRUser *user, NSError *error) {

                           NSLog(@&#34;I am in Block&#34;);
                         }];
NSLog(@&#34;I am here&#34;);
</code></pre>

<hr/>

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

<hr/>

<pre><code>[ signInWithEmail:@&#34;[email protected]&#34;
                           password:@&#34;hdfjhfjhdbf&#34;
                         completion:^(FIRUser *user, NSError *error) {

                           NSLog(@&#34;I am in Block&#34;);
                         }];
NSLog(@&#34;I am here&#34;);
while (YES) {};
</code></pre>

<hr/>

<p>我的输出是:
我来了</p>

<p>问题:如果 FIRAuthblock 在另一个线程中运行,它应该打印“我在 block 中”,无论我们在主线程中有无限循环。怎么可能?FIRAuthblock 在同一个主线程中以较低的优先级运行吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>通常在 Firebase 中我们:</p>

<ul>
<li><p>在单独的线程中运行与网络和磁盘交互的操作</p></li>
<li><p>在主线程上显示回调,以便您的代码可以与 UI 交互</p></li>
</ul>

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

<p>如果您想等待结果,请使用此处所述的信号量:<a href="https://stackoverflow.com/questions/4326350/how-do-i-wait-for-an-asynchronously-dispatched-block-to-finish" rel="noreferrer noopener nofollow">How do I wait for an asynchronously dispatched block to finish?</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Firebase signInWithEmail 函数是否在主线程中运行?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37914620/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37914620/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Firebase signInWithEmail 函数是否在主线程中运行?