Код довольно прост, он должен загрузить из файла настроек все существующие ссылки на изображения, масштабировать их до 250x250 и сохранить их под другим именем.
Проблема в том, что на устройстве (протестированном на iPhone 3g и iPad) оно через некоторое время вылетает с предупреждениями памяти. На симуляторе работает отлично.
У меня есть UIViewController, который имеет на ViewDidПоявиться этот код:
ThreadPool.QueueUserWorkItem( delegate{
make_thumbs();
});
Функция make_thumbs:
void make_thumbs()
{
using( var ns = new NSAutoreleasePool() )
{
foreach( var c in Settings.Instance.Categories )
{
for( var i = 0; i < c.Pictures.Count; i++ )
{
//this is the existing bundled image path
string path = c.Pictures[i].PicturePath;
string folder = Environment.GetFolderPath( Environment.SpecialFolder.Personal );
//this is the destination image file name
string filename = Path.Combine( folder, c.Name + i + ".png");
if( !File.Exists( filename ) )
{
NSError err;
using(UIImage img = UIImage.FromFile( path ).Scale( 250,250 ))
{
img.AsPNG().Save( filename, true, out err );
}
}
}
}
}
}