2

アプリケーションがあり、プロファイリングしています。私はインストルメントにまったく慣れておらず、iOS開発者でもあります。私はios6を使用していますが、非常に珍しいリークがあります。UIImageにカテゴリを作成し、capinsetsを使用するための画像を返すためのヘルパーメソッドを追加しました。私のカテゴリは次のようになります、

@implementation UIImage (Helpers)

+(UIImage*)resizableImageWithName:(NSString *)imageName andCapInsets:(UIEdgeInsets)insets{
    UIImage *image = [UIImage imageNamed:imageName];
    return [image resizableImageWithCapInsets:insets];
}

@end

機器は、同じ場所のこの領域で3/4のリークを示しており、その理由を理解できませんでした。それで、カテゴリ内で作成した新しい画像をリリースする必要があります。リリースした場合、何を返しますか?ここでメモリリークが発生している理由を教えてください。

そして、私はそれをこのように使用しました。

[self.progressView setTrackImage:[UIImage resizableImageWithName:@"progress_bar_background.png" andCapInsets:UIEdgeInsetsMake(2, 2, 2, 2)]];

この方法でこの方法を使用することに何か問題がありますか?

4

1 に答える 1

1

Instruments が示す方法は、リークしたメモリが割り当てられている場所です。必ずしもメモリがリークしている場所ではありません。確かに、メモリ管理に関してあなたの方法は正しいです。

したがって、返されたUIImageオブジェクトの処理方法を調べたほうがよいでしょう...おそらく、このヒントがリークの原因を見つけるのに役立たない場合は、さらにコードを投稿してください。

于 2013-01-10T18:20:16.507 に答える