Приложение iPhone ломается из-за нехватки памяти, но отлично работает в симуляторе - PullRequest
0 голосов
/ 25 ноября 2010

Дорогие все, у меня есть приложение на основе навигации с около 60 просмотров.

Я бегал со следующим: 1. Построить и проанализировать: булид успешен без нареканий. 2. Распределение приборов и утечки: нет утечек.

Тем не менее, приложение упало на iPhone или iPad, но отлично работает в симуляторе. Авария происходит примерно на 50-м виде. Нет отчетов о сбоях, но я вижу LowMemory.log в папке crashreporter.

Я обновил свой iphone и ipad до 4.2

У кого-нибудь есть идеи, что может быть не так? Я читаю и устраняю неполадки в течение недели.

Спасибо за все ответы.

Мое приложение имеет корневое представление под названием contentViewController, и пользователи могут перейти к 4 опросам отсюда.

Это код, который я использую для возврата к своему корневому представлению.

- (void)goHome {
UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle: @"Warning"
                      message: @"Proceed?"
                      delegate: self
                      cancelButtonTitle:@"Yes"
                      otherButtonTitles:@"No",nil];
[alert show];
[alert release];

}

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
[[self navigationController] setNavigationBarHidden:NO animated:YES];
if (buttonIndex == 0) {
    NSArray * subviews = [self.view subviews];
    [subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
    self.view = nil;
    if (self.contentViewController == nil)
    {
        ContentViewController *aViewController = [[ContentViewController alloc]
                                                  initWithNibName:@"ContentViewController" bundle:[NSBundle mainBundle]];
        self.contentViewController = aViewController;
        [aViewController release];
    }
    [self.navigationController pushViewController:self.contentViewController animated:YES]; 
}

} * * тысяча двадцать-один

Пример кода для просмотра представлений:

-(IBAction) buttonArrowClicked:(id)sender {
NSURL *tapSound   = [[NSBundle mainBundle] URLForResource: @"click"
                                            withExtension: @"aif"];

// Store the URL as a CFURLRef instance
self.soundFileURLRef = (CFURLRef) [tapSound retain];

// Create a system sound object representing the sound file.
AudioServicesCreateSystemSoundID (

                                  soundFileURLRef,
                                  &soundFileObject
                                  );
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if (![[defaults stringForKey:@"sound"] isEqualToString:@"NO"]) {
    AudioServicesPlaySystemSound (soundFileObject);
}       

if (self.exercise2ViewController == nil)
{
    Exercise2ViewController *aViewController = [[Exercise2ViewController alloc]
                                                initWithNibName:@"Exercise2ViewController" bundle:[NSBundle mainBundle]];
    self.exercise2ViewController = aViewController;
    [aViewController release];
}
[self.navigationController pushViewController:self.exercise2ViewController animated:YES];   

}

Ответы [ 2 ]

3 голосов
/ 25 ноября 2010

Обычно вы не столкнетесь с проблемами памяти при работе под симулятором, поэтому эти ошибки не встречаются автоматически на этой платформе.

Однако в симуляторе есть функция, с помощью которой вы можете вручную запускать событие «Недостаточно памяти». Если это на самом деле является причиной сбоя на устройстве, то также возможно, что вы можете вызвать ту же ошибку в симуляторе таким образом.

0 голосов
/ 25 ноября 2010

Обмен некоторыми кодами о том, как вы нажимаете контроллеры представления, позволит другим помочь вам в этом.

Вы можете получить доступ к контроллеру корневого представления, выполнив:

[self.navigationController popToRootViewControllerAnimated:YES];

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

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