0

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`

このクラッシュ ログを調べた後、クラッシュ ログの手がかりを得ることができませんでした。誰かがこれを解決するのを手伝ってくれますか?

4

1 に答える 1

-1

これは '-[UITextField dealloc]' という行であるように見えるので、テキストフィールドの割り当てが解除され、すべてのオブジェクトがクリーンアップされます。これがクラッシュする可能性が最も高いオブジェクトは「テキスト」属性ですが、その textField によって保持された、設定した他の属性である可能性があります。

したがって、最初にすべきことは、クラッシュの原因となっている textField を突き止めてから、そのオブジェクトに設定したすべてのものを調べることです。

例 (非 ARC):

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

クラッシュを引き起こす可能性があります(これはテストしていません)。textField には多くのプロパティ (設定可能なビュー) があり、1 つを設定してリリースしすぎると、クラッシュが発生する可能性があります。

編集:これらの行を見てください:

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% 確実なことはわかりません。

于 2012-09-05T11:36:15.287 に答える