菜鸟教程小白 发表于 2022-12-12 23:56:36

ios - 刷新 UITableView 的内容会卡住应用程序


                                            <p><p>我在 UITableview 中刷新数据时遇到问题。目前有一个 UIRefreshControl,当触发(通过下拉)时,执行以下操作:</p>

<pre><code>- (void)refreshByScrolling:(UIRefreshControl *)refreshControl {
    ;
    ;
}
</code></pre>

<p>此时 UI 卡住(期待旋转的 refreshControl,直到 方法完成。</p>

<p>有没有办法让它在我刷新数据时 UI 不会卡住?例如,在 twitter 和 Instagram 应用程序上,您可以在开始向下滚动表格后立即下拉刷新。</p>

<p> 的代码如下</p>

<pre><code>-(void)refreshPriceInformation
{

isRefreshing = true;

//Creating Queues for Concurrent refreshes
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);


dispatch_apply(, queue, ^(size_t i) {

      SkinToWatch *watchedSkin =;
      ;

});

dispatch_async(queue, ^{
   NSLog(@&#34;Saving Data to Phone&#34;);

   // resaving data to phone
   NSData *newdata = ;
   [ setObject:newdata forKey:@&#34;watchSkinsArray&#34;];
   [synchronize ];


    isRefreshing = false;
   ;

   //Updating Refresh Label
   ;

});



}
</code></pre>

<p>谢谢!</p>

<p>编辑******
正如 HackerInHeels 下面所说,用 DISPATCH_QUEUE_PRIORITY_BACKGROUND 包装 dispatch_apply 已经阻止了 UI 卡住! </p>

<p>跟进问题:
1)如何确保这是最后执行的代码块?</p>

<pre><code>dispatch_async(queue, ^{
         NSLog(@&#34;Saving Data to Phone&#34;);

//rest of code...
});
</code></pre>

<p>在实现解决方案之前,它是执行的最后一个 block 。解决之后,就不是这样了。我是否将其放入另一个队列?让它同步而不是aysnc?</p>

<p>再次感谢!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你能帮我试试这个吗..</p>

<p>在 dispatch_async 中包装 SkinToWatch 代码</p>

<pre><code>dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    dispatch_apply(, queue, ^(size_t i) {

    SkinToWatch *watchedSkin =;
    ;

    });
});
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 刷新 UITableView 的内容会卡住应用程序,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/24814700/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/24814700/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 刷新 UITableView 的内容会卡住应用程序