1

iOS アプリに次のコードがあります。

- (IBAction)cameraButtonPressed:(id)sender
{
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == NO)
    {
        return;
    }

    UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
    cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;
    cameraUI.allowsEditing = NO;
    cameraUI.delegate = self;
    [self presentModalViewController:cameraUI animated:YES];
}

このコードの問題[cameraUI release];は、メソッドの最後に a が必要なことです。以前は、Xcode に組み込まれている静的コード アナライザーがこれらの見落としを見つけるのに役立ちましたが、現在の Xcode 4.0.2 インストールでは、この問題は見つかりません。Xcode を再起動しようとしましたが、Clean Build Folder ([プロジェクト] メニューをクリックしながらオプションを押したまま) を試しましたが、うまくいきませんでした。最新の Xcode のアナライザーに問題がありますか、それとも他に不足しているものがありますか?

4

3 に答える 3

1

コールバックメソッドpickerでを解放する必要があります。UIImagePickerControllerDelegate

于 2011-07-08T14:37:43.503 に答える
1

以前は、Xcode に組み込まれている静的コード アナライザーがこれらの見落としを見つけるのに役立ちましたが、現在の Xcode 4.0.2 インストールでは、この問題は見つかりません。

John Boker の回答を考えると、もう気にしないかもしれませんが、これが本当に問題である場合は、 http://clang-analyzer.llvm.org/からダウンロードして、古い (または新しい) バージョンの Clang 静的アナライザーを使用できます。 release_notes.html、およびset-xcode-analyzerコマンドでそれを使用するように Xcode に指示します ( http://clang-analyzer.llvm.org/xcode.html )。

于 2011-07-09T15:51:03.357 に答える
0

UIImagePickerController は、それを表す自動解放オブジェクトです。

    UIImagePickerController *cameraUI = [[[UIImagePickerController alloc] init]autorelease];

于 2011-07-08T14:31:32.907 に答える