Objective-C勉強会@東京9月でUILocalNotificationのパターンとテストについて発表した
Objective-C勉強会@東京 9月 – Objective-C勉強会@東京 | Doorkeeper に参加してきたメモとスライドです。
UILocalNotificationのパターンとテスト – azu
自分が発表したUILocalNotificationのパターンについてのスライドです。
以前書いたUILocalNotificationを使った通知の設定について — ios-practice 0.1 documentationをベースにしています。
上記の文章には入れてなかった
- 繰り返し
- 音と表示時間の関係
などについて含めているので、UILocalNotificationでやることについては大体入ってる気がします。
スライド中でも繰り返し書かれている “通知全てをキャンセルしてから登録し直す” というパターンについては、以下のような考えが根底にある気がします。
UILocalNotification による通知はそのまま登録する永続オブジェクトのように動くが、動き的にはセッションごと(今回はアプリがバッググラウンドに行くまでがひとつのサイクル)に通知捨てるような動作の方が分かりやすくなる。
CoreDataみたいな普通の永続オブジェクトの場合だと、削除して追加し直すような動作は無駄な処理に感じるけど、UILocalNotificationの通知の場合は
単純化できるメリット > 毎回登録し直す処理コスト
という感じがしてるので、キャンセルしてから登録し直すパターンを採用してる事が多い気がする。
また、バックグランド移行時に登録するパターンを採用することで、”毎回登録し直す処理コスト”が UIに与える影響が小さくなるという点もあるので、こういうパターンが使いやすいと思っています。
TableViewAgent – @akuraru
- TableViewをつかうと100行ぐらいは突破
- ViewControllerは小さくしたいので書いた
- TableViewAgentを作りました。 – いつもあさって!!
- akuraru/TableViewAgent · GitHub
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型は便利なので使えるところは積極的に採用するべき的な話です。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。