12-Swiftのプロパティ

3050 ワード

1、属性とは


属性は、オブジェクトの性質とオブジェクトの関係の総称です.属性は変数または定数であり、クラスのインスタンスにアタッチされます.

2、記憶属性

        /**
          
         */
        class Car {
            var  priceValue = 0
        }
        /*   */
        let myCar = Car()
        print(myCar.priceValue)
        /**
          : priceValue  , 。
         */

3、計算属性


1、計算属性とは
計算プロパティを定義するには、ストレージプロパティを宣言するように変数を宣言しますが、後にカッコを大きくします.これらのカッコの内部には、get部分とset部分があります.
2、計算属性の作成
        class NetWorkRectangle  {
            var width:Double = 0.0
            var height = 0.0
            /*  */
            var area:Double  {
                /*  */
                get {
                  return width * height
                }
                /*   */
                set {
                    width = sqrt(newValue)
                    height = sqrt(newValue)
                }
            }
        }

3、計算属性の呼び出し
        /*  */
        let rect = NetWorkRectangle()
        rect.width = 100
        rect.height = 200
        print(rect.area)
        /*  :20000.0 */
        rect.area = 1000
        print(rect.width,rect.height)
        /*  : 31.6227766016838 31.6227766016838 */

4、属性オブザーバ


1、属性オブザーバとは
観察属性とは,属性が変化すると,あるコードが実行される.このコードは、変更が発生する前または変更が発生したばかりの後に実行できます.
2、属性オブザーバの定義方法
アトリビュートオブザーバを作成するには、アトリビュートの後ろにカッコを追加し、willSetとdidSetコードブロックを含める必要があります.これらのコードブロックは、属性値が変化する前に呼び出されるパラメータをそれぞれ取得します.彼は設定する値を取得し、didSetは古い値を取得します.
3、属性オブザーバの例
        class PropertyObserver {
            var number:Int = 0 {
                willSet(newValue) {
                   print("willSet  to  \(newValue)")
                }
                didSet(oldValue){
                  print("oldValue fo \(oldValue) to \(self.number)")
                }
            }
        }
        /**
          : , , 。
         */

4、属性オブザーバの使用
        /*   */
        var observer = PropertyObserver()
        /*  , */
        observer.number = 150
        /*   : 
         willSet  to  150
         oldValue fo 0 to 150
         */

5、怠惰性属性


1、怠惰性属性とは
怠惰性とは、最初のアクセス時までプロパティを設定することです.怠惰性を設定する方法:属性を怠惰性として定義するには、その前にlazyのキーワードを置くことができます.
2、怠惰性属性の例
        class Log{
            init(id :Int) {
                 print(" Example class \(id) created")
            }
        }
        
        class lazyExample {
            var number = Log(id:110)
            lazy var numberLazy = Log(id:220)
            init() {
                 print("init  lazyExample")
            }
        }

3、怠惰性の呼び出し
        /*  */
        var LazyObject = lazyExample()
        /* : Example class 110 created */
        var ob = LazyObject.number
        /* : 
          :number  
         */
        var ob1 = LazyObject.numberLazy
        /**
          :init  lazyExample
         Example class 220 created 
         */