プロパティ・オブザーバを使い倒す
デジタルサーカス(株)⻑⾧長⾕谷川智希
⾃自⼰己紹介
⻑⾧長⾕谷川智希 / デジタルサーカス(株) 副団⻑⾧長CTO
と も き
@tomzoh

とむぞう
iOS Swift
Coming
Soon
開発系趣味
その他趣味
iOSアプリ開発, Web開発 趣味のプログラム
レンタルカートレース, 電⼦子⼯工作(mbed), …
デジタルサーカス(株)
・ Webサイト受託開発
・ スマホアプリ受託開発
・ ⾃自社サービス
(PHP, Drupal, CakePHP)
(iOS, Android)
(http://appbuilder.jp)
Twitter: @tomzoh
Twitter: @tomzoh Yo: TOMZOH
今⽇日のテーマ:
プロパティ・オブザーバ を使い倒す
プロパティ・オブザーバ
“Property	
  observers	
  observe	
  and	
  respond	
  to	
  
changes	
  in	
  a	
  property’s	
  value.	
  Property	
  
observers	
  are	
  called	
  every	
  time	
  a	
  property’s	
  
value	
  is	
  set,	
  even	
  if	
  the	
  new	
  value	
  is	
  the	
  same	
  as	
  
the	
  property’s	
  current	
  value.”
Apple	
  Inc.	
  “The	
  Swift	
  Programming	
  Language”
セルのインスタンスを作って…
セルのインスタンスを作って…
そのインスタンスにデータを設定する
プロパティ・オブザーバを使うと、
コレをキレイに書ける。
1. Swiftのプロパティ
2. コンピューテッド・プロパティ
3. プロパティ・オブザーバ
解説の流流れ
1. Swiftのプロパティ
Swiftのプロパティ
Swiftのプロパティ
ストアドプロパティ
値を格納するプロパティ
Swiftのプロパティ
ストアドプロパティ
値を格納するプロパティ
Swiftのプロパティ
コンピューテッド・プロパティ
値を計算するプロパティ
Swiftのプロパティ
コンピューテッド・プロパティ
値を計算するプロパティ
2. コンピューテッド・プロパティ
ゲッターとセッター
ゲッターとセッター
ゲッター
プロパティを参照した時に実⾏行行さ
れる。プロパティの型の値を返す。
必須。
ゲッターとセッター
ゲッター
セッター
プロパティを参照した時に実⾏行行さ
れる。プロパティの型の値を返す。
必須。
プロパティに値を設定した時に実
⾏行行される。値を返さない。任意。
コンピューテッド・プロパティ使⽤用例例
コンピューテッド・プロパティ使⽤用例例
ゲッター
左上とサイズから中⼼心の座
標を計算して返す。
コンピューテッド・プロパティ使⽤用例例
ゲッター
セッター
左上とサイズから中⼼心の座
標を計算して返す。
中⼼心の座標を受け取って
左上の座標を更更新する。
3. プロパティ・オブザーバ
Viewを表⽰示する前に実⾏行行
Viewを表⽰示する前に実⾏行行
Viewを表⽰示した後に実⾏行行
プロパティ・オブザーバはこれのプロパティ版
みたいな感じ。
プロパティ・オブザーバの実装
プロパティ・オブザーバの実装
プロパティ・オブザーバの実装
基本的にはストアド・プロパティ
プロパティ・オブザーバの実装
プロパティに値をセットする前に実⾏行行される。
newValueにこれからセットする値が渡される。
プロパティ・オブザーバの実装
プロパティに値をセットした後に実⾏行行される。
oldValueに元の値が渡される。
プロパティ・オブザーバの活⽤用例例
プロパティ・オブザーバの活⽤用例例
プロパティに値をセットすると…
プロパティに値をセットすると…
セルに値が設定される
こんな⾵風に書いてた
値を格納するためのプロパティ _shop
を宣⾔言しておいて、setShop(shop:),
getShop() -> Shopを使って値を設
定、取得する。
こんな⾵風に書いてた
値を格納するためのプロパティ _shop
を宣⾔言しておいて、setShop(shop:),
getShop() -> Shopを使って値を設
定、取得する。
こんな⾵風に書ける!
値を格納するためのプロパティ shop
とその振る舞いを宣⾔言するだけ。
値を参照したければ普通にプロパ
ティとして参照すれば良良い。
使い倒そう!
プロパティ・オブザーバ!
Enjoy Swift!!
ありがとうございました。
@tomzoh

Swiftのプロパティオブザーバを使い倒す