📱

【Swift】プロパティオブザーバ:willSet と didSet

2023/10/15に公開

Swiftプログラミングにおいて、プロパティの値が変更される前後で特定のコードを実行するために、didSetwillSetというプロパティオブザーバを利用できます。

プロパティオブザーバー (Property Observer) は、Swiftプログラミング言語において、プロパティの値が変更された際に特定のコードブロックを実行するための仕組みです。
プロパティオブザーバーは、プロパティの変更に関連するカスタムロジックを追加し、コードをより柔軟かつ効果的に制御するために使用されています。

本記事では、didSetwillSetの違いについて詳しく説明します。

willSet

willSetは、プロパティの値が変更される前に実行されるプロパティオブザーバです。

willSetの主な特徴:

  • willSetブロックは、プロパティの新しい値が設定される前に実行される
  • newValueという特別な名前のパラメータを介して、新しい値にアクセスできる
  • newValueを変更して新しい値を設定できるが、実際のプロパティの値が変更される前の段階でのみ有効

willSetの使用例:

var someProperty: Int = 0 {
    willSet {
        // プロパティの値が変更される前に実行されるコード
        print("プロパティの値が \(someProperty) から \(newValue) に変更されます。")
    }
}

didSet

didSetは、プロパティの値が変更された後に実行されるプロパティオブザーバです。

didSetの主な特徴:

  • didSetブロックは、プロパティの値が変更された後に実行される
  • oldValueという特別な名前のパラメータを介して、以前の値にアクセスできる
  • didSetブロック内ではプロパティの値を変更できる

didSetの使用例:

Copy code
var someProperty: Int = 0 {
    didSet {
        // プロパティの値が変更された後に実行されるコード
        print("プロパティの値が \(oldValue) から \(someProperty) に変更されました。")
    }
}

Discussion