2012-12-01 37 views
1

這很有趣。我有一個通用應用程序。 iPhone和iPad版本都共享相同的類,並且只有不同的xib文件。我經常收到更新iPad版本後的報告,它不會運行,只是崩潰。但是,iPhone版本的更新工作得很好。刪除iPad應用程序,重新啓動和重新安裝將解決啓動時的崩潰問題。在iPad上更新應用程序崩潰

更新與受影響的代碼:

好了,resymbolicating和查看代碼受影響的線路,在這裏後,我覺得是造成問題的所有領域。

我想要的應用要求應用程序是運行問題的第一次,也是唯一的一次,所以在AppDelegate中didFinishLaunchingWithOptions我:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if (! [defaults boolForKey:@"notFirstRun"]) { 
    UIAlertView *firstrun = [[UIAlertView alloc] initWithTitle:@"Sermon Preference" message:@"Do you prefer audio only, or video sermons? (This setting can be changed at any time in the Settings Page.)" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Audio", @"Video", nil]; 
     [firstrun show]; 
     [firstrun release]; 
    [defaults setBool:YES forKey:@"notFirstRun"]; 
} 

然後我在AppDelegate中還有:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
     if (buttonIndex == 0)  { 
      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
      NSString *nope = @"Audio"; 
      [defaults setObject:nope forKey:@"videosermons"]; 
      [defaults synchronize]; 


     } 
     if (buttonIndex == 1)  { 
      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
      NSString *yup = @"Video"; 
      [defaults setObject:yup forKey:@"videosermons"]; 
      [defaults synchronize];  } 

     } 

我想這些值在設置窗口中改變,所以在設置Ⅰ類有:

- (void)viewDidLoad 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 


     NSString *currently = [defaults objectForKey:@"videosermons"]; 

    if ([currently isEqualToString:@"Audio"]) { 
     segment.selectedSegmentIndex = 0; 
    } 
    if ([currently isEqualToString:@"Video"]) { 
     segment.selectedSegmentIndex = 1; 
    } 


    NSString *firstName = [defaults objectForKey:@"firstName"]; 
    if (firstName == nil) { 

    } 
    else { 
     myTextField.text = firstName; 
    } 
    NSURL *url = [NSURL URLWithString:@"http://www.bellavenue.org/worship.html"]; 
    self.content = [NSString stringWithContentsOfURL:url]; 
    [super viewDidLoad]; 
} 

的崩潰日誌說,導致崩潰的行是:

if ([currently isEqualToString:@"Audio"]) { 

什麼一切是怎麼回事,是造成崩潰只在iPad上,只更新已經安裝的以前版本的時候,而不是全新安裝?

UPDATE CRASH LOG:

Incident Identifier: EE5B1A62-12DB-4ED5-95CD-0C68CE1614BA 
CrashReporter Key: 92fbea1d35e30ff292ba7362f93548dceedefe66 
Hardware Model:  iPad2,5 
Process:   Bell Avenue [1013] 
Path:   /var/mobile/Applications/CE1AE921-5767-4B3C-B223-2C098041C73E/Bell Avenue.app/Bell Avenue 
Identifier:  Bell Avenue 
Version:   ??? (???) 
Code Type:  ARM (Native) 
Parent Process: launchd [1] 

Date/Time:  2012-12-01 14:11:10.653 -0600 
OS Version:  iOS 6.1 (10B5105c) 
Report Version: 104 

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x0000000000000000, 0x0000000000000000 
Crashed Thread: 0 

Last Exception Backtrace: 
0 CoreFoundation     0x3411529e 0x34053000 + 795294 
1 libobjc.A.dylib     0x33f3297a 0x33f2a000 + 35194 
2 CoreFoundation     0x34118e02 0x34053000 + 810498 
3 CoreFoundation     0x3411752c 0x34053000 + 804140 
4 CoreFoundation     0x3406ef64 0x34053000 + 114532 
5 Bell Avenue      0x0008652e -[Settings viewDidLoad] (Settings.m:64) 
6 UIKit       0x3396578c 0x337c5000 + 1705868 
7 UIKit       0x3396d5fa 0x337c5000 + 1738234 
8 UIKit       0x3399786a 0x337c5000 + 1910890 
9 UIKit       0x33820ae4 0x337c5000 + 375524 
10 UIKit       0x337c8f7c 0x337c5000 + 16252 
11 UIKit       0x337c8a10 0x337c5000 + 14864 
12 UIKit       0x337c845e 0x337c5000 + 13406 
13 GraphicsServices    0x3afaf59e 0x3afa9000 + 26014 
14 GraphicsServices    0x3afaf1ce 0x3afa9000 + 25038 
15 CoreFoundation     0x340ea16e 0x34053000 + 618862 
16 CoreFoundation     0x340ea112 0x34053000 + 618770 
17 CoreFoundation     0x340e8f94 0x34053000 + 614292 
18 CoreFoundation     0x3405beb8 0x34053000 + 36536 
19 CoreFoundation     0x3405bd44 0x34053000 + 36164 
20 UIKit       0x3381f7c8 0x337c5000 + 370632 
21 UIKit       0x3381c644 0x337c5000 + 357956 
22 Bell Avenue      0x000832fe main (main.m:13) 
23 libdyld.dylib     0x39d7ab1c 0x39d79000 + 6940 


Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x385b6350 0x385a5000 + 70480 
1 libsystem_c.dylib    0x3a64d11e 0x3a61e000 + 192798 
2 libsystem_c.dylib    0x3a68996e 0x3a61e000 + 440686 
3 libc++abi.dylib     0x33e1cd4a 0x33e19000 + 15690 
4 libc++abi.dylib     0x33e19ff4 0x33e19000 + 4084 
5 libobjc.A.dylib     0x33f32a74 0x33f2a000 + 35444 
6 libc++abi.dylib     0x33e1a078 0x33e19000 + 4216 
7 libc++abi.dylib     0x33e1a110 0x33e19000 + 4368 
8 libc++abi.dylib     0x33e1b594 0x33e19000 + 9620 
9 libobjc.A.dylib     0x33f329cc 0x33f2a000 + 35276 
10 CoreFoundation     0x3405bf1c 0x34053000 + 36636 
11 CoreFoundation     0x3405bd44 0x34053000 + 36164 
12 UIKit       0x3381f7c8 0x337c5000 + 370632 
13 UIKit       0x3381c644 0x337c5000 + 357956 
14 Bell Avenue      0x000832fe main (main.m:13) 
15 libdyld.dylib     0x39d7ab1c 0x39d79000 + 6940 

Thread 1: 
0 libsystem_kernel.dylib   0x385b6d98 0x385a5000 + 73112 
1 libsystem_c.dylib    0x3a624cf6 0x3a61e000 + 27894 
2 libsystem_c.dylib    0x3a624a12 0x3a61e000 + 27154 
3 libsystem_c.dylib    0x3a6248a0 0x3a61e000 + 26784 

Thread 2 name: Dispatch queue: com.apple.libdispatch-manager 
Thread 2: 
0 libsystem_kernel.dylib   0x385a6648 0x385a5000 + 5704 
1 libdispatch.dylib    0x3aee2974 0x3aeda000 + 35188 
2 libdispatch.dylib    0x3aee2654 0x3aeda000 + 34388 

Thread 3: 
0 libsystem_kernel.dylib   0x385b6d98 0x385a5000 + 73112 
1 libsystem_c.dylib    0x3a624cf6 0x3a61e000 + 27894 
2 libsystem_c.dylib    0x3a624a12 0x3a61e000 + 27154 
3 libsystem_c.dylib    0x3a6248a0 0x3a61e000 + 26784 

Thread 4 name: WebThread 
Thread 4: 
0 libsystem_kernel.dylib   0x385b60fc 0x385a5000 + 69884 
1 libsystem_c.dylib    0x3a61f124 0x3a61e000 + 4388 
2 WebCore       0x38db41c0 0x38da8000 + 49600 
3 WebCore       0x38db40f2 0x38da8000 + 49394 
4 CoreFoundation     0x340ea6ca 0x34053000 + 620234 
5 CoreFoundation     0x340e89bc 0x34053000 + 612796 
6 CoreFoundation     0x340e8de8 0x34053000 + 613864 
7 CoreFoundation     0x3405beb8 0x34053000 + 36536 
8 CoreFoundation     0x3405bd44 0x34053000 + 36164 
9 WebCore       0x38db22a8 0x38da8000 + 41640 
10 libsystem_c.dylib    0x3a62f30e 0x3a61e000 + 70414 
11 libsystem_c.dylib    0x3a62f1d4 0x3a61e000 + 70100 
+0

嘗試獲取崩潰報告,或者至少控制檯日誌,以尋找線索。更少的是隨機猜測。 –

+0

不幸的是,我在iTunes Connect中沒有崩潰報告,並且我的iPad上沒有任何舊版本來執行更新並在xcode中運行 – user717452

+0

也許應用商店正在提供損壞的二進制文件。它每隔一段時間就會這樣做。 – CodaFi

回答

0

系統引起該應用中止(SIGABRT)。有幾個問題中的代碼:

  1. viewDidLoad所有的代碼應該在viewWillAppear:實際執行。沒有任何代碼與iOS加載視圖時執行的代碼相關。
  2. self.content = [NSString stringWithContentsOfURL:url]是一個同步調用,阻塞主線程的時間長短。您應該或者異步調用它,或者使用NSOperationQueue加載內容,然後再次將其設置在主線程上。現在這阻止了視圖控制器的加載過程,這是一個更糟糕的想法。
  3. 未顯示異常消息,但我懷疑currently對象不是NSString類型,並且它得到一個unrecognized selector sent to instance錯誤。

您可能需要閱讀本系列關於如何閱讀和崩潰報告:http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1

+0

我做了一些更多的測試,並在控制檯得到這個: [__NSCFBoolean isEqualToString:]:無法識別的選擇發送到實例0x3d58d528 – user717452

+0

所以,如果你userdefaults得到的值是一個'Bool'值,而不是'NSString'就像你期望的那樣。也許在以前的版本中,你使用'Bool'作爲相同的密鑰? – Kerni

+0

出於某種原因,該值,則返回該鍵爲0時,我期待的是一直使用的音頻或視頻 – user717452

相關問題