应用程序从主线程崩溃

时间:2012-09-05 10:58:56

标签: iphone objective-c ios

我的iPad应用程序因以下崩溃日志而崩溃

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x3290732c __pthread_kill + 8
1   libsystem_c.dylib               0x34c7c208 pthread_kill + 48
2   libsystem_c.dylib               0x34c75316 __abort + 86
3   libsystem_c.dylib               0x34c752ba abort + 122
4   libsystem_c.dylib               0x34c87efa szone_error + 262
5   libsystem_c.dylib               0x34c88b2a free_tiny_botch + 78
6   libsystem_c.dylib               0x34c33934 szone_free + 404
7   CoreFoundation                  0x374ab730 CFAllocatorDeallocate + 116
8   CoreFoundation                  0x374ab6a4 CFRelease + 1052
9   UIKit                           0x30704d98 -[UILabel dealloc] + 132
10  libobjc.A.dylib                 0x315d316e _objc_rootRelease + 30
11  UIKit                           0x30697d34 -[UIView(Hierarchy) removeFromSuperview] + 176
12  UIKit                           0x306c009e -[UIView dealloc] + 266
13  UIKit                           0x30704d08 -[UIControl dealloc] + 88
14  UIKit                           0x307c8a26 -[UITextField dealloc] + 566
15  libobjc.A.dylib                 0x315d316e _objc_rootRelease + 30
16  UIKit                           0x30697d34 -[UIView(Hierarchy) removeFromSuperview] + 176
17  UIKit                           0x306c009e -[UIView dealloc] + 266
18  libobjc.A.dylib                 0x315d316e _objc_rootRelease + 30
19  libobjc.A.dylib                 0x315d4e50 objc_release + 32
20  libobjc.A.dylib                 0x315d3ea6 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 218
21  libobjc.A.dylib                 0x315d3dc2 _objc_autoreleasePoolPop + 6
22  CoreFoundation                  0x374b2cf8 _CFAutoreleasePoolPop + 12
23  QuartzCore                      0x35e0d4b8 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 56
24  CoreFoundation                  0x37536b14 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 12
25  CoreFoundation                  0x37534d50 __CFRunLoopDoObservers + 252
26  CoreFoundation                  0x375350aa __CFRunLoopRun + 754
27  CoreFoundation                  0x374b849e CFRunLoopRunSpecific + 294
28  CoreFoundation                  0x374b8366 CFRunLoopRunInMode + 98
29  GraphicsServices                0x376b1432 GSEventRunModal + 130
30  UIKit                           0x306c4cce UIApplicationMain + 1074
31  TestAPP                         0x000023aa main (main.m:15)
32  TestAPP                         0x00002368 start + 32`enter code here`

在查看此崩溃日志后,我无法对崩溃日志采取任何线索。 有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:-1)

看起来这就是说法' - [UITextField dealloc]' - 所以文本字段被解除分配,并清理所有对象。最容易崩溃的对象是“text”属性,但它可能是您设置的该textField保留的任何其他属性。

所以要做的第一件事就是追踪textField导致崩溃的内容,然后查看你在该对象上设置的所有内容。

例如,(非ARC):

NSString *text = textField.text; // you don't own this object
[text release];

可能导致崩溃(没有测试这个)。 textField有很多属性 - 可以设置的视图 - 如果你设置了一个,那么它可能会导致崩溃。

编辑:看看以下几行:

17  UIKit                           0x306c009e -[UIView dealloc] + 266
18  libobjc.A.dylib                 0x315d316e _objc_rootRelease + 30
19  libobjc.A.dylib                 0x315d4e50 objc_release + 32
20  libobjc.A.dylib                 0x315d3ea6 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 218

自下而上,他的系统似乎会弹出自动释放池,然后首先调用UIView dealloc,然后开始释放该视图拥有的对象。这是我的解释,但我不是Apple工程师,所以我不确定100%。