1

タイマーに以下のコードを設定したため、しばらくするとクラッシュする次のコードがあります。

CGImageRef cgImage = UIGetScreenImage();
[array addObject:(id)cgImage];
CGImageRelease(cgImage);

最初に私が宣言arrayしたところ:

array = [[NSMutableArray alloc] init];

タイマーは10秒後にクラッシュするので1/10秒なので、タイマーは10秒までうまくいきます。

アプリケーションがクラッシュするのは原因だと思いますが、EXC_BAD_EXCESS解決方法がわかりません。誰かが問題を解決するのを手伝ってもらえますか?

Advに感謝します。

4

3 に答える 3

0

Apple Developer Forum から UIGetScreenImage() へ:

この関数を使用すると、保持された CGImageRef が返され、それに応じてメモリが管理されることに注意してください。

于 2010-04-13T12:16:09.933 に答える
0

addObject: オブジェクトが nil の場合、例外が発生します。これを試して:

array = [[NSMutableArray alloc] initWithCapacity:1]; //designated initializer
CGImageRef cgImage = UIGetScreenImage();
if(cgImage)
{
    [array addObject:cgImage];
    CGImageRelease(cgImage);
}
于 2010-04-13T12:04:07.710 に答える
0

本当にcgImageをリリースするつもりですか?

UIGetScreenImage() のドキュメントは表示されませんが、Create Ruleに従っている場合、オブジェクトを解放する必要はないと思います (関数の名前に「Create」または「Copy」がないため)。

編集:関数の名前にもかかわらず、イメージをリリースする必要があるといういくつかの参照を見つけました。(これは3.2 SDK で名前が変更されたようです。UICreateScreenImage()

于 2010-04-13T12:08:34.377 に答える