Adobe AIR SDK 15 の iOS アプリで arguments.callee が動作してない?
iOS8 がらみで、AIR SDK の更新が必要になりそうなので、現在リリースされている最新版の AIR SDK 15 (15.0.0.249)をダウンロード。
iPhone向けにパブリッシュして、実機テストをしていたところ、アプリがフリーズ。
調べてみたところ、 無名関数などで、関数自体を参照するためのプロパティ 「arguments.callee」 が動作していないっぽい。
関数内で、removeEventListener すると、
TypeError: Error #2007: Parameter listener must be non-null.
という表示が出て、止まっていることが判明。
例えば以下のようなコードの場合
addEventListener(TimerEvent.TIMER_COMPLETE,function(event:TimerEvent):void{ for (var i:uint = 0; i < arguments.length; i++) { trace("arguments:",arguments[i]); } trace("arguments.callee:",arguments.callee); removeEventListener(TimerEvent.TIMER_COMPLETE,arguments.callee); });
arguments: [TimerEvent type="timerComplete" bubbles=false cancelable=false eventPhase=2] arguments.callee: undefined TypeError: Error #2007: Parameter listener must be non-null.
となって、止まってしまう。
AIR SDK 14 (14.0.137)でパブリッシュしたアプリだと、
arguments: [TimerEvent type="timerComplete" bubbles=false cancelable=false eventPhase=2] arguments.callee: function Function() {}
と表示される。
本来は、arguments.callee には、値が入っているはずなのに、AIR SDK 15 では、
「undefined」すなわち、値が入ってきていない。
ちなみに、AIR SDK 15 のβ版(15.0.0.258)でも同じ結果。
http://labs.adobe.com/technologies/flashruntimes/air/
一難去ってまた一難。うーん、困った。
とりあえず、arguments.calleeを使わない方法に書き換えるしかないのかなぁ。