当我使用XCode运行它时,应用程序运行良好。我尝试了iOS 7,iOS 8设备和模拟器。我将应用程序发布到App Store中,并在更新后在启动屏幕上崩溃。我还尝试将应用程序上传到预发布的TestFlight应用程序中,它也在启动屏幕上崩溃。你能帮忙调试吗?
崩溃日志:
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)
}
我发现如果我在文件读取后添加睡眠它可以正常工作。那太奇怪了。
没有睡觉:
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
答案 0 :(得分:1)
我想问题在于构建设置,如果在项目中使用swift,似乎应该将构建设置"Embedded Content Contains Swift Code"
中的标志从NO切换到YES。
我曾试图谷歌更多关于这个标志的信息,我在苹果开发者门户网站上找到了一些信息:
构建不包含Swift源文件的应用程序时 但嵌入其他内容(如框架,XPC服务,应用程序 扩展,等等)确实包含Swift代码,你必须设置 构建设置嵌入式内容包含Swift代码 (EMBEDDED_CONTENT_CONTAINS_SWIFT)。这样Swift库就会这样 被包括在申请中。 (17757566)
此外,我发现这篇文章看起来像你的问题:breefield.com/essays/critical-app-review
答案 1 :(得分:1)
我是如何解决这个问题的:
NSArray(contentsOfFile: path)
向下转型对归档应用中的swift数组很奇怪。有时候它会正常下载,有时会为同一个plist文件返回nill
(文件中没有变化)。我将所有使用文件的[NSDictionary]
替换为NSArray?
,现在效果很好。
此问题仅针对应用商店应用(.ipa
)存档。如果我在模拟器或设备上运行它,它也适用于swift数组。
感谢@fluidsonic提供关于施法的建议。