Objective-C勉強会@東京 9月 – Objective-C勉強会@東京 | Doorkeeper に参加してきたメモとスライドです。


UILocalNotificationのパターンとテスト – azu

自分が発表したUILocalNotificationのパターンについてのスライドです。

以前書いたUILocalNotificationを使った通知の設定について — ios-practice 0.1 documentationをベースにしています。

上記の文章には入れてなかった

  • 繰り返し
  • 音と表示時間の関係

などについて含めているので、UILocalNotificationでやることについては大体入ってる気がします。

スライド中でも繰り返し書かれている “通知全てをキャンセルしてから登録し直す” というパターンについては、以下のような考えが根底にある気がします。

UILocalNotification による通知はそのまま登録する永続オブジェクトのように動くが、動き的にはセッションごと(今回はアプリがバッググラウンドに行くまでがひとつのサイクル)に通知捨てるような動作の方が分かりやすくなる。

CoreDataみたいな普通の永続オブジェクトの場合だと、削除して追加し直すような動作は無駄な処理に感じるけど、UILocalNotificationの通知の場合は

単純化できるメリット > 毎回登録し直す処理コスト

という感じがしてるので、キャンセルしてから登録し直すパターンを採用してる事が多い気がする。

また、バックグランド移行時に登録するパターンを採用することで、”毎回登録し直す処理コスト”が UIに与える影響が小さくなるという点もあるので、こういうパターンが使いやすいと思っています。


TableViewAgent – @akuraru

MVC

  • モデルの状態をViewが表示しているだけ
  • View -> Model を参照
  • View -> Model にするとViewで計算をして表示しなくちゃ

TableViewAgenet

Controller -> Service - > Model
             -> ViewObject -> View
             -> VIew
  • ViewはViewObejctだけを見て表示を変える

  • 一つのViewObjectに対してUITableViewCellを割り当てる

  • Todoなら、ViewObjectに時間や名前を入れる

  • ViewObject < -> UITableViewCell

ViewObjects は ViewObjectの配列とする

TableViewAgent

  • TableViewDelegate の代行クラス
  • 最小のモノだけDelegateで提供

TableViewでやりたいこと

  • 配列の内容を表示する
  • 要素に合ったCellの選択
  • Cellを選択したの時の挙動
  • Cellの削除

提供してるメソッド

  • viewObjectsの設定
  • 編集モードへの移行

利点

  • TableViewの何番目かを考えないようにする
  • NSIndexPathの代わりにViewObjectを返す

利用フロー

  • ViewAgentを作成
  • viewObjectを作ってagent.viewObjectsに設定する
  • Agentのdelegateをメソッドを実装する
  • drawで描画し直す

instacetype と typeof(self)

もう一個発表した、instancetype型とtypeofなどについてです。

5分ぐらいで書いたのでかなり大雑把ですが、instancetype型は便利なので使えるところは積極的に採用するべき的な話です。