AppStore发布后iOS应用程序崩溃

当我使用XCode运行应用程序时,应用程序运行良好。 我尝试了我的iOS 7,iOS 8设备和模拟器。 我发布了应用程序到App Store中,更新后它在启动屏幕上崩溃。 我也尝试将应用程序上传到TestFlight应用程序的预发行版,并且它也在启animation面上崩溃。 你能帮忙debugging吗?

系统崩溃日志:

Incident Identifier: 5C421B8B-BFBF-475E-8C06-F5B76E3B36F4 CrashReporter Key: 1e8c22653ed4eb9bb1cec65ac6feb9963cf3ce48 Hardware Model: iPhone6,2 Version: 1 (2.0.0) Code Type: ARM-64 (Native) Parent Process: launchd [1] Date/Time: 2014-10-08 12:36:24.760 +0400 Launch Time: 2014-10-08 12:36:23.547 +0400 OS Version: iOS 8.0.2 (12A405) Report Version: 105 Exception Type: EXC_BREAKPOINT (SIGTRAP) Exception Codes: 0x0000000000000001, 0x0000000100134690 Triggered by Thread: 0 Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 majorapp 0x0000000100134690 @objc majorapp.SideBarViewController.init (majorapp.SideBarViewController.Type)(coder : ObjectiveC.NSCoder) -> majorapp.SideBarViewController (SideBarViewController.swift:30) 1 UIKit 0x000000018bbedab0 -[UIClassSwapper initWithCoder:] + 232 2 UIKit 0x000000018bcc5638 UINibDecoderDecodeObjectForValue + 808 3 UIKit 0x000000018bcc52f4 -[UINibDecoder decodeObjectForKey:] + 340 4 UIKit 0x000000018bbed5e0 -[UIRuntimeConnection initWithCoder:] + 164 5 UIKit 0x000000018bcc5638 UINibDecoderDecodeObjectForValue + 808 6 UIKit 0x000000018bcc55d8 UINibDecoderDecodeObjectForValue + 712 7 UIKit 0x000000018bcc52f4 -[UINibDecoder decodeObjectForKey:] + 340 8 UIKit 0x000000018bbeca40 -[UINib instantiateWithOwner:options:] + 1096 9 UIKit 0x000000018bdab9ec -[UIStoryboard instantiateViewControllerWithIdentifier:] + 216 10 UIKit 0x000000018bdaef5c -[UIStoryboardSegueTemplate _perform:] + 84 11 majorapp 0x00000001001f23e0 -[SWRevealViewController loadStoryboardControllers] (SWRevealViewController.m:671) 12 majorapp 0x00000001001f2610 -[SWRevealViewController loadView] (SWRevealViewController.m:733) 13 UIKit 0x000000018b7e4a6c -[UIViewController loadViewIfRequired] + 84 14 UIKit 0x000000018b7e49d8 -[UIViewController view] + 28 15 UIKit 0x000000018b7eb0a0 -[UIWindow addRootViewControllerViewIfPossible] + 68 16 UIKit 0x000000018b7e8844 -[UIWindow _setHidden:forced:] + 292 17 UIKit 0x000000018b8596a8 -[UIWindow makeKeyAndVisible] + 52 18 UIKit 0x000000018ba6cc0c -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2800 19 UIKit 0x000000018ba6f184 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1476 20 UIKit 0x000000018ba6d81c -[UIApplication workspaceDidEndTransaction:] + 180 21 FrontBoardServices 0x000000018f26d63c __31-[FBSSerialQueue performAsync:]_block_invoke + 24 22 CoreFoundation 0x000000018701a35c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 16 23 CoreFoundation 0x0000000187019464 __CFRunLoopDoBlocks + 308 24 CoreFoundation 0x0000000187017664 __CFRunLoopRun + 692 25 CoreFoundation 0x0000000186f45660 CFRunLoopRunSpecific + 392 26 UIKit 0x000000018b84f4fc -[UIApplication _run] + 548 27 UIKit 0x000000018b84a4f4 UIApplicationMain + 1484 28 majorapp 0x0000000100164ac8 main (AppDelegate.swift:0) 29 libdyld.dylib 0x0000000197cb6a04 start + 0 Thread 1 name: Dispatch queue: com.apple.libdispatch-manager Thread 1: 0 libsystem_kernel.dylib 0x0000000197db4c94 kevent64 + 8 1 libdispatch.dylib 0x0000000197c9c97c _dispatch_mgr_invoke + 272 2 libdispatch.dylib 0x0000000197c8f4a0 _dispatch_mgr_thread + 48 Thread 2: 0 libsystem_kernel.dylib 0x0000000197dcfc78 __workq_kernreturn + 8 1 libsystem_pthread.dylib 0x0000000197e69390 _pthread_wqthread + 988 2 libsystem_pthread.dylib 0x0000000197e68fa4 start_wqthread + 0 Thread 3 name: Dispatch queue: SCNetworkReachability.concurrent Thread 3: 0 libsystem_kernel.dylib 0x0000000197dcf0c0 __psynch_mutexwait + 8 1 libsystem_pthread.dylib 0x0000000197e69548 _pthread_mutex_lock + 416 2 SystemConfiguration 0x000000018b77a92c __SCNetworkReachabilityUpdateConcurrent + 164 3 SystemConfiguration 0x000000018b77b0fc ____SCNetworkReachabilityUpdate_block_invoke + 40 4 libdispatch.dylib 0x0000000197c8d498 _dispatch_call_block_and_release + 20 5 libdispatch.dylib 0x0000000197c8d458 _dispatch_client_callout + 12 6 libdispatch.dylib 0x0000000197c96020 _dispatch_async_redirect_invoke + 688 7 libdispatch.dylib 0x0000000197c8d458 _dispatch_client_callout + 12 8 libdispatch.dylib 0x0000000197c99408 _dispatch_root_queue_drain + 1140 9 libdispatch.dylib 0x0000000197c9a758 _dispatch_worker_thread3 + 104 10 libsystem_pthread.dylib 0x0000000197e692e0 _pthread_wqthread + 812 11 libsystem_pthread.dylib 0x0000000197e68fa4 start_wqthread + 0 Thread 4 name: Dispatch queue: SCNetworkReachability.concurrent Thread 4: 0 libsystem_kernel.dylib 0x0000000197db4eb8 semaphore_wait_trap + 8 1 libdispatch.dylib 0x0000000197c9aa4c _dispatch_semaphore_wait_slow + 252 2 libxpc.dylib 0x0000000197e92374 xpc_connection_send_message_with_reply_sync + 184 3 SystemConfiguration 0x000000018b7b0c9c __SCNetworkReachabilityServer_targetStatus + 192 4 SystemConfiguration 0x000000018b77d190 __SCNetworkReachabilityGetFlags + 440 5 SystemConfiguration 0x000000018b77a99c __SCNetworkReachabilityUpdateConcurrent + 276 6 SystemConfiguration 0x000000018b77b0fc ____SCNetworkReachabilityUpdate_block_invoke + 40 7 libdispatch.dylib 0x0000000197c8d498 _dispatch_call_block_and_release + 20 8 libdispatch.dylib 0x0000000197c8d458 _dispatch_client_callout + 12 9 libdispatch.dylib 0x0000000197c96020 _dispatch_async_redirect_invoke + 688 10 libdispatch.dylib 0x0000000197c8d458 _dispatch_client_callout + 12 11 libdispatch.dylib 0x0000000197c99408 _dispatch_root_queue_drain + 1140 12 libdispatch.dylib 0x0000000197c9a758 _dispatch_worker_thread3 + 104 13 libsystem_pthread.dylib 0x0000000197e692e0 _pthread_wqthread + 812 14 libsystem_pthread.dylib 0x0000000197e68fa4 start_wqthread + 0 Thread 0 crashed with ARM Thread State (64-bit): x0: 0x0000000000000001 x1: 0x000000020000078c x2: 0x000000017810fa58 x3: 0x0000000197e09a74 x4: 0x00000001782a0980 x5: 0x0000000000000001 x6: 0x000000017826b580 x7: 0x0000000000000000 x8: 0x0000000000000000 x9: 0x000001a5982c81c9 x10: 0x0000000000000007 x11: 0x00000001982d48a0 x12: 0x000000015d00dc00 x13: 0x000001a5982c81c9 x14: 0x0000000000003fff x15: 0x0000000000000000 x16: 0x0000000197e61698 x17: 0x0000000186f65f0c x18: 0x0000000000000000 x19: 0x000000017810fa50 x20: 0x4000000000000074 x21: 0x0000000170007af0 x22: 0x000000017810fa50 x23: 0x0000000178057df0 x24: 0x0000000178057e20 x25: 0x0000000000000000 x26: 0x0000000000000000 x27: 0x0000000198eee000 x28: 0x0000000198eee000 fp: 0x000000016fd054c0 lr: 0x0000000100134690 sp: 0x000000016fd05480 pc: 0x0000000100134690 cpsr: 0x60000000 

我使用Swift,XCode 6,部署目标iOS7 +

更新:

方法代码:

 required init(coder aDecoder: NSCoder) { let path = NSBundle.mainBundle().pathForResource("menu_items", ofType: "plist") self.menuItems = NSArray(contentsOfFile: path!) as [NSDictionary] super.init(coder: aDecoder) } 

更新3

我发现,如果我在文件阅读后添加睡眠,它工作正常。 这真的很奇怪。

没有睡觉:

 override func viewDidLoad() { super.viewDidLoad() if let path = NSBundle.mainBundle().pathForResource("menu_items", ofType: "plist") { self.menuItems = NSArray(contentsOfFile: path) as? [NSDictionary] NSLog("Path Exists"); if let mi = self.menuItems { NSLog("Content Exists"); NSLog("%@",mi) } } self.menuTableView.reloadData() } 

产量

 Path Exists 

self.menuItems是零

随着睡眠:

  override func viewDidLoad() { super.viewDidLoad() if let path = NSBundle.mainBundle().pathForResource("menu_items", ofType: "plist") { self.menuItems = NSArray(contentsOfFile: path) as? [NSDictionary] NSLog("Path Exists"); if let mi = self.menuItems { NSLog("Content Exists"); NSLog("%@",mi) } sleep(10) if let mi = self.menuItems { NSLog("Content Exists 2"); NSLog("%@",mi) } } self.menuTableView.reloadData() } 

输出:

 Path Exists Content Exists %here is data of my array% Content Exists 2 %here is data of my array% 

self.menuItems不是零,睡前和之后! O_O

我想问题在于构build设置,如果您在项目中使用swift,似乎应该将构build设置中的标志"Embedded Content Contains Swift Code"从NO切换到YES。

我试图谷歌更多关于这个标志的信息,我发现了苹果开发者门户网站的一些信息:

在构build不包含Swift源文件但embedded了包含Sw​​ift代码的其他内容(如框架,XPC服务,应用程序扩展等)的应用程序时,必须设置构build设置embedded式内容包含Swift代码(EMBEDDED_CONTENT_CONTAINS_SWIFT)。 这样,Swift库将被包含在应用程序中。 (17757566)

另外我遇到了这篇文章,看起来像你的问题: breefield.com/essays/critical-app-review

我如何解决这个问题:

NSArray(contentsOfFile: path)向下转换在存档应用程序中使用swift数组很奇怪。 有时会正常nill ,有时会返回到同一个plist文件(文件没有更改)。 我将所有与文件一起工作的[NSDictionary]replace成NSArray? 现在效果很好

该问题仅在app store应用程序( .ipa )存档。 如果我在模拟器或设备上运行它,它也适用于swift数组。

感谢@fluidsonic关于铸造的build议。