0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

swift5でぐるぐる回るやつの回るタイミングが遅れるやつの治し方

Last updated at Posted at 2021-02-22

症状

  • swift5
    lag_refresh.gif

TL;DR

  • swift5で下スワイプでぐるぐるなるやつRefreshControl
  • 更新はされるが,ぐるぐるの回転が始まるタイミングが遅かった
  • 以下のように直した

変更前

    @objc func refresh() {
        sleep(3)//重い処理を想定
        DispatchQueue.main.async {
            self.tableView.refreshControl?.endRefreshing()
        }
    }

変更後

  • mainじゃないglobalのスレッド?に並列処理として重い処理を投げる(ニワカナノデヨクワカッテナイ)
    @objc func refresh() {
        DispatchQueue.global(qos: .default).async(execute: {
            sleep(3)/重い処理を想定
            DispatchQueue.main.async {
              self.tableView.refreshControl?.endRefreshing()
            }
        })
    }

小話

最近iOSアプリを作っていて,公式を参考にひっぱたら更新するやつを書いていましたが,上記の症状に見舞われググること丸1日に溶かしました.ここに書いている通りに書いてみたら動いたので同じ苦しみを味わう不幸な日本語圏の人を産まないようにここにメモしておきます.

(資料) ViewController.swift

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        tableView.refreshControl = UIRefreshControl()
        tableView.refreshControl?.addTarget(self, action:
        #selector(refresh),
        for: .valueChanged)
        
        
    }
   @objc func refresh() {
    DispatchQueue.global(qos: .default).async(execute: {
        sleep(3)/重い処理を想定
        DispatchQueue.main.async {
           self.tableView.refreshControl?.endRefreshing()
        }
    })
   }
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?