次のコードは、約 200 回の呼び出し後にクラッシュします。各呼び出しの後に GC を試し、別の GC で MemoryWarning ブロックを試みましたが、それでもクラッシュします。
public byte[] ConvertImage(string base64String)
{
try
{
byte[] encodedDataAsBytes = Convert.FromBase64String ( base64String );
base64String = "";
NSData data = UIImage.LoadFromData ( NSData.FromArray ( encodedDataAsBytes ) ).AsPNG();
encodedDataAsBytes = null;
Byte[] returnBytes2 = new Byte[data.Length];
System.Runtime.InteropServices.Marshal.Copy
(data.Bytes, returnBytes2, 0, System.Convert.ToInt32(data.Length));
data.Dispose();
return returnBytes2;
}
catch(Exception ex)
{
Log.LogError("ConvertImage", ex);
return null;
}
}
ティア、リック
Xamarin サポートからの多くのヘッド バンギングと優れたヘルプの後、答えはメソッドをラップすることですusing (var pool = new NSAutoreleasePool ())
すべてが順調です!ああ、もう 1 つのポイントとして、.PNG を .JPEG に変更すると、負荷も軽減されました。