0

iPhone アプリを分析すると、次のような青い矢印の警告が表示されます。

potential leak of an object stored into pauseImgBg

アトラスから部分的な画像を切り取って、pauseMenuIV imageView.

CGImageRef pauseImgBg = CGImageCreateWithImageInRect([UIImage imageNamed:@"atlas.png"].CGImage, CGRectMake(1, 1, 640.0f, 960.0f));
pauseMenu = [UIImage imageWithData:UIImagePNGRepresentation([UIImage imageWithCGImage:pauseImgBg])];// I have the blue arrow in this line
[pauseMenuIV setImage:pauseMenu];

何が問題なのですか?
ありがとう。

4

2 に答える 2

3

おそらく、次の方法でリリースする必要があります

CGImageRelease(pauseImgBg);
于 2012-11-02T11:33:58.167 に答える
2

CGImageCreateWithImageInRect保持カウントが +1 の CGImageRef を返します。そのため、受信した CGImageRef を解放する必要があります。

CGImageRelease(pauseImgBg);

最終的には。時間があればドキュメントを読んでみてください。この種のケースを切り分けるのに役立ちます。ドキュメントから

Core Foundation 関数には、返されたオブジェクトをいつ所有するかを示す名前があります。

  • 名前に「Create」が埋め込まれたオブジェクト作成関数
  • 名前に「コピー」が埋め込まれたオブジェクト複製関数。

あなたがオブジェクトを所有している場合、それを使い終わったときに所有権を放棄するのはあなたの責任です。

そしてCGImageCreateWithImageInRect自体のドキュメントから

結果の画像は元の画像への参照を保持します。つまり、この関数を呼び出した後に元の画像を解放できます。

于 2012-11-02T11:33:28.137 に答える