UIAlertView вызывает сбой в режиме выпуска - PullRequest
0 голосов
/ 01 октября 2009

Если в моем приложении активирована опция Справка, когда пользователь подходит к камере, я сначала показываю UIAlertView с советами о том, как сделать снимок:

-(void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (buttonIndex != [actionSheet cancelButtonIndex]) {
    NSString *selectedButtonTitle = [actionSheet buttonTitleAtIndex:buttonIndex];
    if ([selectedButtonTitle isEqualToString:@"Camera"]) {
        // If Help is activated display camera tips
        if (helpEnabled == YES) {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Camera Tips" message:@"\n\n\n\n\n\n\n\n\n\n\n\n" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Go To Camera"];
            UIImageView *cameraHelpView = [[UIImageView alloc] initWithFrame:CGRectMake(17, 40, 250, 255)];
            UIImage *cameraTutorial = [UIImage imageNamed:@"Camera_Tips.png"];
            cameraHelpView.image = cameraTutorial;
            [alert addSubview:cameraHelpView];
                    [cameraHelpView release];       
            [alert show];
            [alert release];
        }
    }
}

Это работает в режиме отладки, но вызывает ошибку «EXC BAD ACCESS» в режиме выпуска. С этой точки зрения я могу представить новый контроллер вида модально, но UIAlertView всегда будет вызывать сбой приложения. Почему?

Ответы [ 2 ]

0 голосов
/ 04 октября 2009

Я нашел свою ошибку. Я не передавал ноль в качестве последнего аргумента другимButtonTitles! Режим отладки должен увидеть и исправить эту ошибку за вас. Надеюсь, это кому-нибудь поможет.

0 голосов
/ 02 октября 2009

Я не знаю, почему он работает в режиме отладки, но похоже, что вы выпускаете cameraHelpView, пока он еще используется. В подпунктах alert есть указатель на cameraHelpView; когда вы отпустите, к нему больше не будет доступа. Я бы предложил заменить все ваши -[NSObject release] звонки в этом контексте на -[NSObject autorelease]. Таким образом:

UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Camera Tips" message:@"\n\n\n\n\n\n\n\n\n\n\n\n" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Go To Camera"] autorelease];
UIImage *cameraTutorial = [UIImage imageNamed:@"Camera_Tips.png"];
UIImageView *cameraHelpView = [[[UIImageView alloc] initWithFrame:CGRectMake(17, 40, 250, 255)] autorelease];
cameraHelpView.image = cameraTutorial;
[alert addSubview:cameraHelpView];
[alert show];

Давай, попробуй это и дай мне знать, если это работает. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...