4

以下は、クラッシュしたアプリのスレッドのスタック トレースです。最近、アプリを ARC に変換しました。最後の呼び出しは、tabviewcontroller の私のタブの 1 つの rootviewcontroller である HomePageViewController の cxx_destruct に対するものです。appdelegate 実装ファイルは、コンパイルに対して ARC が有効になっていないため、HomePageViewController は appdelegate ファイルの tabbarviewcontroller に追加されると解放されます。HomePageViewController 実装ファイルには、コンパイル用の ARC 有効フラグがあります。誰かが私を正しい方向に導くことができますか?

0   libobjc.A.dylib                 0x35bcdf2a objc_release
1   MySample                        0x00096142 -[HomePageViewController .cxx_destruct] + 402
2   libobjc.A.dylib                 0x35bcff3a object_cxxDestructFromClass(objc_object*, objc_class*)
3   libobjc.A.dylib                 0x35bcd0ce objc_destructInstance
4   libobjc.A.dylib                 0x35bcd3a2 object_dispose
5   UIKit                           0x37b05c84 -[UIViewController dealloc]
6   MySample                        0x00095afa -[HomePageViewController dealloc] + 218
7   libobjc.A.dylib                 0x35bcd484
8   CoreFoundation                  0x3801343c _CFAutoreleasePoolPop
9   UIKit                           0x37a46d94 _wrapRunLoopWithAutoreleasePoolHandler
10  CoreFoundation                  0x380a56ca __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
11  CoreFoundation                  0x380a39bc __CFRunLoopDoObservers
12  CoreFoundation                  0x380a3d12 __CFRunLoopRun
13  CoreFoundation                  0x38016eb8 CFRunLoopRunSpecific
14  CoreFoundation                  0x38016d44 CFRunLoopRunInMode
15  GraphicsServices                0x35ccc2e6 GSEventRunModal
16  UIKit                           0x37a8e2fc UIApplicationMain
17  MySample                        0x0002be98 main + 116
18  MySample                        0x0000315c start +
4

1 に答える 1

0

上記のコメントは正しいです。そのView Controllerでリリースを手動で呼び出しているように見えますが、これはARCでは許可されていません。そのコールを削除するだけで、準備完了です。

また、ARC からアプリ デリゲートを除外したのはなぜですか? Core Dataを使用している場合、Core Dataスタックを除いて、そのクラスには多くのコードさえないはずです...

于 2014-08-07T21:19:05.187 に答える