ObjectiveResource が iOS4.0 で動かなくなった (ObjectiveResourceはだいじょうぶ?)
以前作って、お客様に納めてしまったiPhoneデモアプリが SDK4.0で実機にインストール出来ないという連絡をもらい調査したところ実機にインストール出来ないのはプロジェクト設定の問題でしたが、iOS4にインストールすると落ちます ^^;
調べてみると、ObjectiveResourceの中でスタックオーバーフローで落ちています。ObjectiveResourceを調べてみると NSObject を継承したModel(DTO)のインスタンスをシリアライズ(XML化)する中でスタックオーバーフローしています。
Model(DTO)にはRailsのModelに対応するインスタンス変数しか定義されていないのに、accessibilityValue とかいうインスタンスをシリアライズしようとして再帰呼び出しが止まらなくなっていました。
結局 ObjectiveResource の MLに Recursion in OS 4.0 というスレがあり解決策も書かれていました。
原因は iOS4.0になって NSObjectに accessibilityLanguage, accessibilityFrame, accessibilityTraits, accessibilityHint, accessibilityValue, accessibilityLabel,isAccessibilityElementなどのインスタンス変数が追加されていて、これらをシリアライズする際に無限再帰に入ってしまうようです ^^);
それはそれとして、最近の ObjectiveResourceの開発は上の画像のようにオリジナルの開発者は開発をコントロールしてないようで、たくさんの人が fork を作って、それぞれ開発を進めているようです !! だいじょうぶなのかなぁ〜?