Objective c ARC转换应用程序崩溃,最后一次调用.cxx_destruct
下面是我的应用程序崩溃线程的堆栈跟踪。 我最近将我的应用程序转换为ARC。 最后一个调用是HomePageViewController的cxx_析构函数,它是tabviewcontroller中我的一个选项卡的rootviewcontroller。 appdelegate实现文件未启用编译功能,因此HomePageViewController添加到appdelegate文件中的tabbarviewcontroller后即被释放。 HomePageViewController实现文件具有用于编译的ARC启用标志。 有人能给我指引正确的方向吗Objective c ARC转换应用程序崩溃,最后一次调用.cxx_destruct,objective-c,xcode,automatic-ref-counting,Objective C,Xcode,Automatic Ref Counting,下面是我的应用程序崩溃线程的堆栈跟踪。 我最近将我的应用程序转换为ARC。 最后一个调用是HomePageViewController的cxx_析构函数,它是tabviewcontroller中我的一个选项卡的rootviewcontroller。 appdelegate实现文件未启用编译功能,因此HomePageViewController添加到appdelegate文件中的tabbarviewcontroller后即被释放。 HomePageViewController实现文件具有用于编译的
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 +
以上评论是正确的;您似乎在该视图控制器上手动调用release,而ARC不允许这样做。只要取消那个电话,你就可以走了
另外,为什么您将应用程序代理从ARC中排除?该类中甚至不应该有太多代码,如果您使用的是核心数据,那么除了核心数据堆栈之外…不管您的应用程序委托是否启用了ARC,视图控制器由ARC管理,并且您正在手动尝试释放它。不要那样做。