Moja aplikacja iPhone sporadycznie ulega awarii podczas pierwszego uruchomienia po zainstalowaniu. Potem za każdym razem, gdy próbuję uruchomić aplikację, pozostaje na ekranie powitalnym lub nawet na czarnym ekranie, aż w końcu umiera. Muszę ponownie uruchomić urządzenie, aby aplikacja działała. Po tym działa dobrze za każdym razem. Jedyną zmianą między kodem OS3 a 4 jest właściwość "UIApplicationExitsOnSuspend", aby wymusić ponowne ładowanie aplikacji za każdym razem, zamiast zawieszania. Każda pomoc byłaby świetna.Awaria aplikacji na telefon iPhone (tylko iOS4)
Oto fragmenty dwóch Code:
- (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];
}
inne metody wymienione powyżej:
[taskListViewController setAppDefaults]
[self insertCheck];
setAppDefaults - Wylicza poprzez ustawienia wiązki stosowania defaultValues do NSUserDefaults jeśli nie zostały już ustawione przez użytkownika w pikselach.
insertCheck - wykonuje pewne zapytania na db, aby zapewnić integralność plików na nagraniach audio, ale w tym przypadku, ponieważ po raz pierwszy aplikacja jest ładowana, nie zrobi nic.
Aktualizacja:
Mam wykomentowane dodatkowych połączeń metodą (powyżej dwóch) i jestem nadal ma problem.
Znalazłem kilka osób mających ten sam rodzaj problemu na forum twórców jabłek bez rozwiązań. Jedna odpowiedź pochodzi od użytkownika mającego ten sam problem, ale aplikacja została zatwierdzona w sklepie z aplikacjami.
Dzięki Sj
Możesz edytować swój wpis, aby dołączyć kod do tego, co dzieje się w twoich metodach 'applicationDidFinishLaunching' i' viewDidLoad'. Upewnij się również, że nie masz żadnych 'NSLogs' z niepoprawnymi ciągami danych w formacie danych (% d, gdy na przykład powinno być% @), mogą one powodować awarię bez wyświetlania komunikatów o błędach. – iwasrobbed
Ładowanie okna wygląda normalnie, powiedziałbym, jeśli nie jest to spowodowane domyślnymi ustawieniami użytkownika, rozpocznij debugowanie kodu sprawdzania bazy danych lub początkowych wyników pobierania. – iwasrobbed