4.3.4(ios)のWWWでメモリリークが発生する問題と対策
Unityの4.3.4のiOSのWWWクラスでメモリリークが発生しているらしい。(もしかしたら4.3.3も)
その為、Unity 4.3.4のiOSビルドではWWWを使う度にメモリが増加する不具合が発生している。
これの対処法としては、Xcodeが出力する WWWConnection.mm のUnityDestroyWWWConnectionメソッドに[delegate.data release];を足すこととの事。
extern "C" void UnityDestroyWWWConnection(void* connection)
{
UnityWWWConnectionDelegate* delegate = (UnityWWWConnectionDelegate*)connection;[delegate.connection cancel];
delegate.connection = nil;
[delegate.data release]; // <- この1行を追加
[delegate release];
}
このバグは[Unity]メモリ不足を通知するプラグイン…の解説の様なUnityAppControllerのような手法で修正出来る範囲にないっぽいので、PostprocessBuildPlayerを使うか[Unity]Unityが出力するXcodeプロジェクトを修正するの方法でテンプレート自体を書き換えてしまうのが良さそうだ。
しかし、改めて眺めるとUnityの中に隠蔽してた機能群を
かなり外から弄れるようになってるなあ。
キーボードやタッチみたいな入力とか描画周りとかビデオ処理とか。