iOS 8以奇怪的模式崩溃

我花了一个多小时在一个应用程序上工作,它在iOS 7上完美运行,无论是在设备还是模拟器上。 当我在iOS 8上运行它时,它在模拟器上运行得很好。 但出于某种原因,当我在我的iOS 8设备上运行它时,它开始奇怪地崩溃。 如果我实现CLLocation,应用程序将在我运行它的前5次运行顺利。 然后它将崩溃MOMENT我编译它接下来的5次。 在那之后5次,它再次开始顺利编译。 然后又经过5次,再次发射时崩溃,图案继续。 IE浏览器。 1,跑。 跑。 跑。 跑。 跑。 6-10.crash发布,11-15,运行。 16-20崩溃

但是,当我删除CLLocation时,应用程序运行顺畅,但每次第3次启动都会崩溃。 IE浏览器。 跑 跑。 崩溃 跑。 5.跑6.崩溃。

我一直在靠墙撞墙,好几天不睡觉。 有人可以向我解释原因吗? 对于每次启动时的崩溃,控制台输出的唯一错误是NSDictionary未知选择器。

我不希望我的应用程序被拒绝,如果Apple评论员碰巧在“崩溃时间”之一运行它

控制台Bt

(lldb) bt * thread #3: tid = 0x12646, 0x00000001983640a8 libobjc.A.dylib`objc_exception_throw, queue = 'com.apple.root.default-qos', stop reason = breakpoint 1.1 frame #0: 0x00000001983640a8 libobjc.A.dylib`objc_exception_throw frame #1: 0x0000000187d8d094 CoreFoundation`-[NSObject(NSObject) doesNotRecognizeSelector:] + 220 frame #2: 0x0000000187d89e48 CoreFoundation`___forwarding___ + 928 frame #3: 0x0000000187c8f08c CoreFoundation`_CF_forwarding_prep_0 + 92 frame #4: 0x0000000188c4f0dc Foundation`-[NSString getExternalRepresentation:extendedAttributes:forWritingToURLOrPath:usingEncoding:error:] + 192 frame #5: 0x0000000188c4f23c Foundation`writeStringToURLOrPath + 72 * frame #6: 0x00000001000c9f1c Blurtalk`+[PFInternalUtils installationId](self=, _cmd=) + 340 at PFInternalUtils.m:307 frame #7: 0x00000001000f0a94 Blurtalk`+[PFNetworkCommandRunner createRequest:](self=0x000000010027d1b8, _cmd=, command=0x0000000170056a70) + 268 at PFNetworkCommandRunner.m:61 frame #8: 0x00000001000f1044 Blurtalk`+[PFNetworkCommandRunner runCommandAsync:inOperation:](self=0x000000010027d1b8, _cmd=, command=, operation=) + 196 at PFNetworkCommandRunner.m:132 frame #9: 0x00000001000f1748 Blurtalk`+[PFRetryingCommandRunner runCommandAsync:inOperation:attemptsMade:delay:](self=, _cmd=, command=, operation=, attemptsMade=1, delay=) + 92 at PFRetryingCommandRunner.m:42 frame #10: 0x00000001000f16bc Blurtalk`+[PFRetryingCommandRunner runCommandAsync:inOperation:](self=, _cmd=, command=, operation=) + 124 at PFRetryingCommandRunner.m:35 frame #11: 0x00000001000f1f80 Blurtalk`+[PFCachedCommandRunner runCommandAsync:inOperation:cachePolicy:maxCacheAge:](self=, _cmd=, command=, operation=, cachePolicy=, maxCacheAge=) + 240 at PFCachedCommandRunner.m:82 frame #12: 0x000000010009dcd8 Blurtalk`__48-[BFTask continueWithExecutor:withSuccessBlock:]_block_invoke(.block_descriptor=0x0000000170241e60, task=) + 200 at BFTask.m:335 frame #13: 0x000000010009d730 Blurtalk`__41-[BFTask continueWithExecutor:withBlock:]_block_invoke_2(.block_descriptor=0x000000017807a340) + 32 at BFTask.m:287 frame #14: 0x0000000100338f20 libdispatch.dylib`_dispatch_call_block_and_release + 24 frame #15: 0x0000000100338ee0 libdispatch.dylib`_dispatch_client_callout + 16 frame #16: 0x00000001003459a0 libdispatch.dylib`_dispatch_root_queue_drain + 1272 frame #17: 0x0000000100346f18 libdispatch.dylib`_dispatch_worker_thread3 + 132 frame #18: 0x0000000198b852e4 libsystem_pthread.dylib`_pthread_wqthread + 816 

我已经能够使用NSZombieEnabled重现并缩小崩溃范围。

我的回溯:

 2014-12-30 14:58:26.997 Proto[1398:513570] *** -[CFString getExternalRepresentation:extendedAttributes:forWritingToURLOrPath:usingEncoding:error:]: message sent to deallocated instance 0x170e78fc0 (lldb) bt * thread #7: tid = 0x7d622, 0x00000001864be440 CoreFoundation`___forwarding___ + 968, queue = 'com.apple.root.default-qos', stop reason = EXC_BREAKPOINT (code=1, subcode=0x1864be440) * frame #0: 0x00000001864be440 CoreFoundation`___forwarding___ + 968 frame #1: 0x00000001863c2b6c CoreFoundation`_CF_forwarding_prep_0 + 92 frame #2: 0x000000018738a83c Foundation`writeStringToURLOrPath + 72 frame #3: 0x00000001002485bc Proto`+[PFInternalUtils installationId](self=, _cmd=) + 340 at PFInternalUtils.m:308 frame #4: 0x000000010028a944 Proto`+[PFNetworkCommandRunner createRequest:](self=0x000000010054eea8, _cmd=, command=0x0000000170446990) + 308 at PFNetworkCommandRunner.m:62 frame #5: 0x000000010028aef4 Proto`+[PFNetworkCommandRunner runCommandAsync:inOperation:](self=0x000000010054eea8, _cmd=, command=, operation=) + 196 at PFNetworkCommandRunner.m:133 frame #6: 0x000000010028b5fc Proto`+[PFRetryingCommandRunner runCommandAsync:inOperation:attemptsMade:delay:](self=, _cmd=, command=, operation=, attemptsMade=1, delay=) + 92 at PFRetryingCommandRunner.m:42 frame #7: 0x000000010028b570 Proto`+[PFRetryingCommandRunner runCommandAsync:inOperation:](self=, _cmd=, command=, operation=) + 124 at PFRetryingCommandRunner.m:35 frame #8: 0x000000010028be40 Proto`+[PFCachedCommandRunner runCommandAsync:inOperation:cachePolicy:maxCacheAge:](self=, _cmd=, command=, operation=, cachePolicy=, maxCacheAge=) + 248 at PFCachedCommandRunner.m:83 frame #9: 0x00000001001ad038 Proto`__48-[BFTask continueWithExecutor:withSuccessBlock:]_block_invoke(.block_descriptor=0x0000000170446ea0, task=) + 200 at BFTask.m:335 frame #10: 0x00000001001aca90 Proto`__41-[BFTask continueWithExecutor:withBlock:]_block_invoke_2(.block_descriptor=0x0000000171067b40) + 32 at BFTask.m:287 frame #11: 0x0000000100ab8e30 libdispatch.dylib`_dispatch_call_block_and_release + 24 frame #12: 0x0000000100ab8df0 libdispatch.dylib`_dispatch_client_callout + 16 frame #13: 0x0000000100ac59a0 libdispatch.dylib`_dispatch_root_queue_drain + 1280 frame #14: 0x0000000100ac6f18 libdispatch.dylib`_dispatch_worker_thread3 + 132 frame #15: 0x00000001974312e4 libsystem_pthread.dylib`_pthread_wqthread + 816 

这是Parse SDK中的一个错误,特别是当Parse尝试在初始安装时获取设备信息时。 我建议您直接向Parse报告此错误并将其指向此StackOverflow问题。

这里的额外对话: 在[PFInternalUtils installationId]上解析Objective C库崩溃

编辑:此问题有一个开放的错误报告: https : //developers.facebook.com/bugs/1548203598729083

你应该为所有断点创建一个将在任何exception中停止的断点,请阅读本文,这是一个非常有用的技术。 http://blog.manbolo.com/2012/01/23/xcode-tips-1-break-on-exceptions

顺便说一下,NSDictionary没有长度,似乎你把它与NSString对象混淆了。