2016-08-29 56 views
0

我正在开发的手表应用程序没有使用ARC。因此,我释放了在dealloc中的每个接口中的对象的所有属性,如下所示。没有ARC的WatchKit导致dealloc崩溃

-(void)dealloc { 

    [obj1 release]; 
    [obj2 release]; 
    ... 
    [super dealloc]; 
} 

这导致崩溃时,我关闭接口(例如回到主界面)。这是为什么?

+0

*手表应用程序,我正在开发不使用ARC。*因为你没有采用ARC,你使其更难对自己用)试图手动引用计数(这将导致更多的崩溃或泄漏) ,而不是让这些工具自动为您做,并且b)现在编写过时的代码,这些代码将来必须移植。 –

+0

我没有选择,手表应用程序将附加的当前项目没有ARC。 – GeneCode

+0

仅仅因为现有的iOS应用没有使用ARC,并不意味着新的手表应用也不能使用ARC。目标设置*可以*覆盖项目设置。这将允许您的手表应用程序通过ARC支持进行编译,而您的iOS应用程序在升级之前可以继续不使用ARC。 –

回答

1

保留和释放需要在课堂上保持平衡。当您分配给其中一个实例变量时,可能没有保留,因此它是过度释放。如果出现这种情况,您可以尝试启用僵尸以将消息捕获到释放的实例。