Xcode 4 Analyze не обнаруживает ситуацию утечки памяти - PullRequest
1 голос
/ 08 июля 2011

У меня есть этот код в моем приложении для 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];.В прошлом статический анализатор кода, встроенный в Xcode, помог мне уловить эти упущения, но с моей текущей установкой Xcode 4.0.2 он не нашел этой проблемы.Я попытался перезапустить XCode, и попытался Очистить Папку сборки (удерживая опцию, щелкая меню Проекта), и не имел успеха.Есть ли проблема с анализатором в новейшем Xcode, или мне чего-то не хватает?

Ответы [ 3 ]

1 голос
/ 08 июля 2011

Вы должны освободить picker в методах обратного вызова UIImagePickerControllerDelegate.

1 голос
/ 09 июля 2011

В прошлом статический анализатор кода встроенный в Xcode помог мне поймать эти упущения, но с моим нынешним Xcode 4.0.2 установить, не находит эта проблема.

Возможно, вам уже все равно, учитывая ответ Джона Бокера, но если это действительно было проблемой, вы можете использовать более старую (или более новую) версию статического анализатора Clang, загрузив его из http://clang -анализатора. llvm.org/release_notes.html и указание Xcode использовать его с командой set-xcode-analyzer (http://clang -analyzer.llvm.org / xcode.html ).

0 голосов
/ 08 июля 2011

UIImagePickerController является автоматически выпущенным объектом, представляющим, что

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

...