iPhone - UIImage Leak, ObjectAlloc Building - PullRequest
       33

iPhone - UIImage Leak, ObjectAlloc Building

0 голосов
/ 16 сентября 2009

Хорошо, я испытываю трудности с поиском утечки памяти. При запуске этого скрипта я не вижу утечек памяти, но у меня поднимается объект. Инструменты указывают на CGBitmapContextCreateImage> create_bitmap_data_provider> malloc, это занимает 60% моего objectalloc.

Этот код вызывается несколько раз с помощью NSTimer.

Как мне очистить этот reUIImage после его возвращения?

... или Как я могу сделать так, чтобы UIImage imageWithCGImage не создавал мой ObjectAlloc?

    //I shorten the code because no one responded to another post
    //Think my ObjectAlloc is building up on that retUIImage that I am returning
    //**How do I clear that reUIImage after the return?**

-(UIImage) functionname {
    //blah blah blah code
    //blah blah more code

    UIImage *retUIImage = [UIImage imageWithCGImage:cgImage];
            CGImageRelease(cgImage);

            return retUIImage;
    }

1 Ответ

1 голос
/ 16 сентября 2009

этот метод, который вы используете, создает экземпляр UIImage и устанавливает его в качестве автоматического выпуска. Если вы хотите очистить их, вам нужно будет периодически очищать пул

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
..
..
..
[pool release];

Обратите внимание, что они могут быть вложенными:

NSAutoreleasePool *pool1 = [[NSAutoreleasePool alloc] init];
NSAutoreleasePool *pool2 = [[NSAutoreleasePool alloc] init];
..
..
..
[pool2 release];
[pool1 release];

Обычная практика - размещать их вокруг для циклов и других методов, которые создают много автоматически выпущенных объектов.

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
for (Thing *t in things) {
  [thing doAMethodThatAutoreleasesABunchOfStuff];
}
[pool release]
...