以下代码在调用约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;
}
}
TIA,Rick
经过长时间的思考和Xamarin支持团队的帮助,答案就是将该方法封装在using (var pool = new NSAutoreleasePool ())
中。
现在一切都很好!哦,还有一个要点,将.PNG更改为.JPEG也可以减少负载。