テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

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の中に隠蔽してた機能群を
かなり外から弄れるようになってるなあ。
キーボードやタッチみたいな入力とか描画周りとかビデオ処理とか。