2009年6月8日月曜日

LocalConnection で Object型 を send するときの罠

そういうものなのかはよくわからないけど。

LocalConnection はカスタムクラスを swf 間でやり取りできなくはないけど、インスタンスそのものではなく、プロパティしか送ることができない。AMF形式というものに圧縮されて送られるそうだけど、その詳細はまだよくわかりません。なので、public 型および、明示的な getter, setter だけが渡せるという話だったんだけど、そこで躓いた。

クラスのプロパティを private として定義するときは、当然 public アクセスしてほしくない値だからで、その値に getter と setter を両方用意することはナンセンスだと思ってた。なので、private なプロパティを含むカスタムクラスを LocalConnection で send するときも、当然 getter しか用意しなかった。そこに落とし穴があった。

setter のないプロパティは、send 先で取得することができない。おそらく、AMF形式とやらから解凍するとき(unserialize?)に、値をセットするんだろうけど、それができないんじゃないだろうか(要調査)。じゃあ public でいいじゃない?

ずいぶん時間をとられたけど、ひらめいたとき、これが答えであってほしいような、ほしくないような気持ちがなんとも気持ち悪い感じでした。

0 件のコメント:

コメントを投稿