愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

まあBlocksKitは黙って使っとけや、という話

Objective-Cにはdelegateという面妖な仕組みがあって、いや実は面妖でも何でもなくそれなりに由緒も由縁もある機能なのだが、結局「コールバック関数を必ず何らかのオブジェクトのメソッドとして実装しなければならない」というのは面倒なので、それをいわゆる無名関数(これをObjective-CではBlocksという)で書けるといいよね、という発想のライブラリとしてBlocksKitというものがある。

pandamonia/BlocksKit · GitHub

各所で紹介されているので何を今更、という話でもあるのだが、このライブラリはどちらかといえば「UIKit周りのdelegateで書かなきゃいけない所をBlocksで書けるようになります!」という紹介のされ方が多い。

それ自体は間違いではないのだが、実際にBlocksKitのコード周りを眺めてみるとUIGestureRecognizer周りのハンドリングやKVCによるオブジェクトの監視(要は特定のオブジェクトの特定のフィールドの値が変化したらコールバックを発火される、とか)もBlocksで記述できるような拡張がなされていることが分かる。

つまり、いわゆる標準ライブラリ周りについて「ここBlocksで書けるとうれしいですよね」という部分は大体拡張がされている、痒い所に手の届くライブラリなのだ。Objective-Cを書くのにこれを使わないのは勿体無い、という位である。


余談だが、「CSSiOSアプリのスタイルが定義できる!」という触れ込みで紹介されることの多いNimbusKit(おそらく今はNimbusという名が正しい)だが、個人的にはCSSでウンタラはあまり役に立たない機能だと思っている。Nimbusの記事をTwitterでシェアしたりはてなでブックマークしたりした人は多数居れど、実際のアプリへの適用を試みた人は殆ど居ないのであろう。