以下代码在约 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,瑞克
经过 Xamarin 支持的大量敲击和出色的帮助之后 - 答案是将方法包装在using (var pool = new NSAutoreleasePool ())
现在一切都很好!哦,还有一点,将 .PNG 更改为 .JPEG 也减少了负载。