由于我收到了崩溃的评论,但应用程序从未对我崩溃,我现在用批评来追捕崩溃.
我收到一份报告,指出我的错误.这很容易,因为给出了方法名称和i
可以查看我的代码可能崩溃的内容.到现在为止还挺好.
但我也有以下两个困扰我的人.
在我看来,应用程序在一些内部苹果库中崩溃了.(很可能是因为我给它喂了一些破碎的东西…)
有谁知道这些崩溃?
任何想法我怎么能抓住这些并可能获得更多的崩溃信息?
1号:
0 CoreFoundation 0x3585f88f __exceptionPreprocess + 162 1 libobjc.A.dylib 0x37c06259 objc_exception_throw + 32 2 CoreFoundation 0x35862a9b -[NSObject doesNotRecognizeSelector:] + 174 3 CoreFoundation 0x35861915 ___forwarding___ + 300 4 CoreFoundation 0x357bc650 _CF_forwarding_prep_0 + 48 5 UIKit 0x332f3efb -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 546 6 UIKit 0x332f2f39 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 916 7 UIKit 0x332f2763 -[UITableView layoutSubviews] + 206 8 UIKit 0x33296f37 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 182 9 CoreFoundation 0x357be1fb -[NSObject performSelector:withObject:] + 42 10 QuartzCore 0x3268eaa5 -[CALayer layoutSublayers] + 216 11 QuartzCore 0x3268e6bd _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 216 12 QuartzCore 0x32692843 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 226 13 QuartzCore 0x3269257f _ZN2CA11Transaction6commitEv + 314 14 QuartzCore 0x326ba911 _ZN2CA11Transaction5flushEv + 44 15 QuartzCore 0x326ba8e3 +[CATransaction flush] + 34 16 UIKit 0x332a1fb1 _afterCACommitHandler + 52 17 CoreFoundation 0x35833b1b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18 18 CoreFoundation 0x35831d57 __CFRunLoopDoObservers + 258 19 CoreFoundation 0x358320b1 __CFRunLoopRun + 760 20 CoreFoundation 0x357b54a5 CFRunLoopRunSpecific + 300 21 CoreFoundation 0x357b536d CFRunLoopRunInMode + 104 22 GraphicsServices 0x37451439 GSEventRunModal + 136 23 UIKit 0x332c1cd5 UIApplicationMain + 1080 24 Wohnungssuche 0x000d5218 start + 40
第2号:
Thread: Unknown Name (Crashed) 0 libobjc.A.dylib 0x35beb5d0 objc_msgSend + 16 + 15 1 UIKit 0x39fb0541 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 409 + 408 2 UIKit 0x39f95361 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1317 + 1316 3 UIKit 0x39fac7ff -[UITableView layoutSubviews] + 207 + 206 4 UIKit 0x39f68897 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 259 + 258 5 QuartzCore 0x34ab74eb -[CALayer layoutSublayers] + 215 + 214 6 QuartzCore 0x34ab708d _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 461 + 460 7 QuartzCore 0x34ab7fb1 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 17 + 16 8 QuartzCore 0x34ab799b _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 239 + 238 9 QuartzCore 0x34ab77ad _ZN2CA11Transaction6commitEv + 317 + 316 10 QuartzCore 0x34aee7df _ZN2CA7Display11DisplayLink8dispatchEyy + 255 + 254 11 QuartzCore 0x34aee6d9 _ZN2CA7Display16IOMFBDisplayLink8callbackEP21__IOMobileFramebufferyyyPv + 65 + 64 12 IOMobileFramebuffer 0x375f0fd7 IOMobileFramebufferVsyncNotifyFunc + 155 + 154 13 IOKit 0x3282a5ad IODispatchCalloutFromCFMessage + 193 + 192 14 CoreFoundation 0x3918288b __CFMachPortPerform + 119 + 118 15 CoreFoundation 0x3918d3e7 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 35 + 34 16 CoreFoundation 0x3918d38b __CFRunLoopDoSource1 + 139 + 138 17 CoreFoundation 0x3918c20f __CFRunLoopRun + 1383 + 1382 18 CoreFoundation 0x390ff23d CFRunLoopRunSpecific + 357 + 356 19 CoreFoundation 0x390ff0c9 CFRunLoopRunInMode + 105 + 104 20 GraphicsServices 0x3344933b GSEventRunModal + 75 + 74 21 UIKit 0x39fb9291 UIApplicationMain + 1121 + 1120
谢谢你的帮助!
解决方法
两种情况下的崩溃点都是相同的:
UIKit 0x39fb0541 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 409 + 408
在第一种情况下,表视图试图在未实现所述方法的实例上调用方法.第二次崩溃是由于尝试发送垃圾邮件引起的.
因此,最可能的结论是两次碰撞都是单一问题的症状;你有一个过早释放或过度释放的对象.
特别是,在重新加载表之前或表时,正在释放表视图的数据源.
我怀疑UITableView正试图调用数据源的方法来创建一个单元格.您可以通过在所述方法上设置断点并查看堆栈跟踪来确认这一点.如果我的赌注是正确的,您将在跟踪中看到_createPreparedCellForGlobal …方法.
不知道你的应用程序的细节,很难说.最有可能的是,这是与屏幕上加载的数据之间的时间相关问题,并且用户执行的操作导致请求在表视图加载完成之前被取消,从而导致您的数据源从表下方解除分配(可能会发生,因为表视图具有对象的赋值引用;非保留引用).
要尝试重现,请关注:
•网络连接速度慢或带宽可变(如果您的应用是客户端/服务器)
•做用户可能做的事情导致操作取消
•在视图之间快速导航,无需等待更新完成绘图
在你的评论中,你提到你正在尝试“两个不同的iPhone”.尝试其他设备类型和不同的网络配置.