LoginSignup
3
2

More than 5 years have passed since last update.

Operationによる非同期処理の用例

Last updated at Posted at 2018-02-03

概要

OperationにはConcurrentとNon-Concurrentの2タイプがありますが、本記事ではNon-Concurrentの使用例を簡単に紹介します。Concurrentの処理については別記事を参考にしてください。

背景

iOSアプリの開発において、メインスレッドでのUIの操作と並行して、バックグラウンドで何らかの処理を実行したい時があります。たとえばサーバから何らかのデータをダウンロードする処理であったり、あるいは端末側に溜め込んだデータをサーバ側に送信する場合などです。そのような場合、Operationクラスを用いて非同期に処理を行うことが可能です。

Operationクラスの実装

まずはOperationを継承したクラスを作成し、mainメソッドをoverrideします。下記の例では、dataを用いて何らかの処理を行うSomeOperationクラスを実装しています。

dataを用いて何らかの処理を行うSomeOperationクラス
class SomeOperation: Operation {
    var data: Any

    init(data: Any) {
        self.data = data
    }

    override func main() {
        doSomething(data: self.data)
    }
}

OperationQueueにOperationを追加

次に、下記のようにOperationQueueにOperationを追加していきます。これだけでSomeOperationクラスのmainメソッドの処理が順次走ることになります。

let operationQueue = OperationQueue.main

for data in dataList {
    operationQueue.addOperation(SomeOperation(data: data))
}

参考

3
2
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
3
2