4

由于我收到了有关崩溃的评论,但该应用程序从未为我崩溃,因此我现在使用批评来追捕崩溃。

我收到一份报告指出我的错误。这很容易,因为给出了方法名称,我可以查看我的代码可能会崩溃的地方。到目前为止,一切都很好。

但我也有以下两个让我困惑。

对我来说,看起来应用程序在一些内部苹果库中崩溃了。(很可能是因为我给它喂了一些坏东西......)

崩溃中没有来自我的代码的调用,那么从哪里开始寻找呢?

有人了解这些崩溃吗?知道如何捕捉这些并获得更多崩溃信息吗?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    

谢谢你的帮助!

4

1 回答 1

3

两种情况下的崩溃点是相同的:

 UIKit 0x39fb0541 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 409 + 408

在第一种情况下,表视图试图在未实现所述方法的实例上调用方法。第二次崩溃是由于尝试向垃圾发送消息而引起的。

因此,最可能的结论是,两次崩溃都是同一个问题的征兆。你有一个被过早释放或过度释放的对象。

特别是,表视图的数据源在表重新加载之前或期间被释放。

我怀疑 UITableView 试图调用数据源的方法来创建一个单元格。您可以通过在所述方法上设置断点并查看堆栈跟踪来确认这一点。如果我的赌注是正确的,您将在跟踪中看到 _createPreparedCellForGlobal... 方法。


在不知道您的应用程序的详细信息的情况下,很难说。最有可能的是,这是在屏幕上加载数据与用户执行某些操作之间的时间相关问题,导致请求在表格视图完成加载之前被取消,从而导致您的数据源从表格下方释放(可能会发生,因为表视图具有对您的对象的分配引用;非保留引用)。

要尝试和复制,请关注:

• 缓慢的网络连接或可变带宽(如果您的应用是客户端/服务器)

• 做用户可能会导致操作取消的事情

• 在视图之间快速导航,无需等待更新完成绘图

在您的评论中,您提到您正在尝试使用“两种不同的 iPhone”。尝试其他设备类型和不同的网络配置。

于 2013-01-30T19:14:40.563 回答