XIBファイルをつらつらをEmacsで読むと

結局のところInterfaceBuilderで生成したXIBそれ自体をコードに組み入れることはあきらめて,画面デザインツールとして活用しています.そのためにXIBファイルをエディタで開いてつらつらと読むわけですが,.netのSerializationとの違いが見えて面白いなと思います.

XIBファイルにはFrameやBackGroundColorなどの属性はもちろん含まれますが,それだけではなくて First/SecondResponderなどの,それはコンストラクタなどの処理コードが設定する項目ではないかと思うものまでを(少なくともファイル情報の上では)含んでいます.
これが.netのSerializationだったら,例えばSubViewsというViewの配列を表現するなら,配列を宣言して,その1要素として子要素のインスタンスの生成情報を入れていく構造をとるでしょう.Deserializaでは,まずViewの配列が組み立てられて,それがSubViewsに代入される,そのときに処理コードが,例えば先ほどのFirst/SecondResponderなどを設定する..netのSerialization はプロパティに指定された属性に単に値を組み入れるだけ(その設定順序もとくに指定しなければ実装依存で)のものです.
XIBはコードが設定するものユーザが設定するものの区別無くインスタンスの全ての情報を含んでいて,それらをインスタンスに反映してしまえば,コンストラクタなどのコードがすべき初期化処理がまったく不要になるように作られている感じです.触感的な表現をすれば,Db4objectsのグラフや,インスタンスのヒープメモリ領域をそのままXMLで書き出しているようなものでしょうか.

何がいいたいかといいますと,人間が読むには雑音が多すぎて肝心の情報を取り出すまでに手間がかかって大変だなーということなのです ;-)