第51回 Cocoa勉強会に行ってきた(3/17)
会場は新宿伊藤ビルの貸し会議室。花園神社の近く。地下鉄の駅からE1出口への通路が長い…
以下発表など。
iOS 5で搭載されたページビューコントローラー (iOS)
iOS 5で導入された、ビューコントローラの階層化する仕組みについて。書籍っぽい、縦→単ページ表示/横→見開き表示のアプリを簡単につくることができるようになる
ドキュメントがAPIだけ、サンプルもない。プロジェクトテンプレートはあるのでそこからアプリをつくってみて理解するのがよい。以下のクラス・オブジェクトが協調してページ操作の動作を実現しているという仕組みなので、これらの関係を理解することが重要。
- UIPageViewControllerクラス
- UIPageViewControllerDataSourceプロトコル
- UIPageViewControllerDelegateプロトコル
- アプリの最上位のビューコントローラ
画面の回転(単ページ、見開きの切り替え)はリサイズなどでちょっと注意が必要。
通常の書籍はコンテンツデータ/アイテムとしての販売に移行してるけど、絵本などアクションのあるアプリをつくるときなんかに役に立つのでは。
(感想)もっと早くにあれば、助かった人がたくさんいたかも?ページめくりなどのトランジションが切り替え時にはいることが意識されてるってのはAppleぽいな。
座標と描画 (iOS+Mac)
iOS(UIKit)とMac(CoreGraphichs)では座標系がちがう。考え方とか注意とか。
- 結局アフィン変換の結果が描画されるので、そこを意識するのがよい
- 基準となる系を決めて、描画の実装は必ずそこから考えるようにする
- 人によって解釈とかクセのちがいがあるので共同開発のとき注意
- OpenGL系がはいるとさらに大変なことに
- そもそもMacの左下原点が少数派
- Postscript > Display Postscript(NeXT) > (PDFが入る? > ) CoreGraphics という歴史 (Postscript が左下原点の座標系)
(感想)概念としてはわかるけど、あまりコードで描画するってことはやらないのでフンイキとして理解。「重力で空間がゆがんでるだけで直進してるんですよー」な話をイメージして聞いてたり。
新しいリテラル (clang)
自分の発表。http://d.hatena.ne.jp/kimuraw/20120317/p1 に書いたとおり。他の人の反応は予想してたより好意的だった。
デバッグのテクニック (iOS+Mac)
メッセージが残るものの問題箇所がどこかわからないことがある。たとえばNSArrayに負のインデックスでアクセスしようとしたときとか。
そういうときはmethod swizzlingを利用して、問題の起きているメソッドを差し替えてしまう。そうすると差し替えたメソッドではブレークポイントが仕込めるのでコールスタックから呼び出し場所を特定することができる。
文字だけだとわかりづらいので図を書いてみた。
(感想)なんという力技。でも確かに便利そう。
その他の話題
次回の予定
5月後半に行う予定です。