ARC转换的应用程序崩溃,最后一次调用.cxx_destruct

时间:2012-09-24 09:17:34

标签: objective-c xcode automatic-ref-counting

下面是我的应用程序崩溃的线程的堆栈跟踪。 我最近将我的应用程序转换为ARC。 最后一个调用是HomePageViewController的cxx_destruct,它是tabviewcontroller中我的一个tab的rootviewcontroller。 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 +

1 个答案:

答案 0 :(得分:0)

以上评论是正确的;你似乎是在那个视图控制器上手动调用release,这是ARC不允许的。只要删除那个电话就可以了,你应该做得很好。

另外,为什么要从ARC中排除你的app代理?如果你使用核心数据,除了核心数据堆栈之外,该类中的代码甚至不应该