0

申し分なく、このメモリリークを追跡するのは困難です。このスクリプトを実行すると、メモリ リークは見られませんが、objectalloc が増加しています。Instruments は CGBitmapContextCreateImage > create_bitmap_data_provider > malloc を指します。これは objectalloc の 60% を占めます。

このコードは、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;
    }
4

1 に答える 1

1

使用するこのメソッドは、UIImage をインスタンス化し、自動解放として設定します。これらをクリーンアップしたい場合は、定期的にプールを空にする必要があります

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

これらはネストできることに注意してください。

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

多くの自動解放オブジェクトを作成する for ループやその他のメソッドの周りにこれらを配置するのが一般的な方法です。

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
for (Thing *t in things) {
  [thing doAMethodThatAutoreleasesABunchOfStuff];
}
[pool release]
于 2009-09-16T01:00:59.180 に答える