Hatena::Groupiphone-dev

iOS プログラミングメモ

2012-04-21 (Sat)

UIAlertView の Blocks 対応 14:24  UIAlertView の Blocks 対応 - iOS プログラミングメモ を含むブックマーク

さきほどツイッターで以下の一連の発言を見つけまして、発端は mixi engineer blog なんですが…。

twitter:193519965914144768:detail

twitter:193542029505073152:detail

twitter:193542343209664513:detail

twitter:193548072343699457:detail

twitter:193548851934797824:detail

twitter:193553819425177600:detail

Associated Object ってなんだろなー、やっぱ最前線の開発者はいろんなこと知ってるなぱねぇなとか思いながら、BlocksKit のソースコードを眺めていたのですが、結構入り組んでてわけわかんねーなオレへぼすぎワロタとか感じたので自分で考えることにしまして、もしかしたら UIAlertView のインスタンスに objc_setAssociatedObject でブロックなオブジェクトを代入すれば delegate で受け取れてまぁうまい事になりそうだからそういう事なのかなとかいう結論に落ち着いたところ、こんな感じのソースを発見しました。

UIAlertView, UIActionSheet に表示されるボタン類を、Blocks のコードをプロパティで保持した RIButtonItem クラスのインスタンスにすることで、ボタンとコールバックをうまく関連付けて実行できるように実装したものみたいですね。シンプルだし使い勝手が良さそう。ライセンスはMITライセンスかな。

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20120421