катастрофический отказ приложения для iPhone (iOS4 Только)

Мое приложение для iPhone иногда crashs в первый раз это выполняется, будучи установленным. После этот каждый раз, когда я пытаюсь запустить приложение, это остается на экране-заставке или даже черном экране до в конечном счете, это умирает. Я должен перезапустить устройство для получения рвения. После этого это хорошо работает каждый раз. Единственное изменение между кодом OS3 и 4 является свойством 'UIApplicationExitsOnSuspend', чтобы вынудить приложение перезагрузить каждый раз вместо приостановки. Любая справка была бы большой.

Вот эти два Фрагмента кода:

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{  
    taskListViewController = [[TaskListViewController alloc] initWithNibName:@"TaskListView" bundle:nil];
    taskListViewController.managedObjectContext = self.managedObjectContext;

    [taskListViewController setAppDefaults];

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:taskListViewController];
    [taskListViewController release];

    navController.navigationBar.tintColor = [UIColor blackColor];

    [window addSubview:[navController view]];
    [window makeKeyAndVisible];

}

- (void)viewDidLoad 
{
    NSLog(@"viewDidLoad - Start");
    [super viewDidLoad]; 

    NSError *error = nil;
    if(![[self fetchedResultsController] performFetch:&error])
    {
     NSLog(@"Error with initial fetch %@, %@", error, [error userInfo]);
    }

    [activityIndicator startAnimating];

    self.navigationItem.leftBarButtonItem.enabled = NO;
    self.navigationItem.rightBarButtonItem.enabled = NO;
    infoButton.enabled = NO;
    syncButton.enabled = NO;

    taskListTable.userInteractionEnabled = NO;
    taskListTable.allowsSelection = NO;

    checkingRecovery = true;
    [self insertCheck];
}

Другие Методы упомянули выше:

    [taskListViewController setAppDefaults]
    [self insertCheck];

setAppDefaults - Перечисляет через пакет настроек, применяющий defaultValues к NSUserDefaults, если они уже не были установлены пользователем в peferences.

insertCheck - Выполняет некоторые запросы на дб для обеспечения целостности файлов на аудиозаписях, но в этом случае поскольку это - первый раз, когда приложение загружается, это ничего не сделает.

Обновление:

Я прокомментировал дополнительные вызовы метода (два выше), и у меня все еще есть проблема.

Я нашел несколько человек, имеющих тот же вид проблемы на форуме разработчика яблока без решений. Один ответ был от пользователя, имеющего ту же проблему, но там приложение действительно становилось утвержденным на App Store.

Спасибо Sj

7
задан Sjblack 24 July 2010 в 12:46
поделиться

3 ответа

Вы просматривали файлы журналов?

Вы можете скопировать их со своего iPhone, если вы подключите его, загрузите органайзер (Windows-> Организатор в XCode) и выберите журналы устройства.

Если вы видите журнал за время сбоя вашего приложения, он должен включать стек вызовов (который должен включать функцию, вызывающую его сбой)

В качестве альтернативы может случиться так, что вы застряли в каком-то коде, запущенном при запуске - и если ваше приложение не запускается вовремя (в течение 30 секунд IIRC) iOS убивает его.

0
ответ дан 7 December 2019 в 20:32
поделиться

Попробуйте выполнить его без элемента managedObjectContext и посмотрите, не происходит ли по-прежнему сбой. Что в журнале написано при падении? У вас возникла ошибка памяти?

0
ответ дан 7 December 2019 в 20:32
поделиться

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

Если бы вы могли предоставить трассировку стека, было бы намного проще найти причину сбоя.

1
ответ дан 7 December 2019 в 20:32
поделиться