Iphone 释放并按下视图控制器

Iphone 释放并按下视图控制器,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我有一个自定义视图控制器,我将其推送到导航堆栈上,如下所示: myViewController *myVC = [[myViewController alloc] init]; [myVC generate:myData]; [self.navigationController pushViewController:myVC animated:YES]; 代码运行良好,但在检查内存泄漏时,我得到一个警告,myVC永远不会被释放 添加发布声明 [myVC release]; 在第4行中,编译很

我有一个自定义视图控制器,我将其推送到导航堆栈上,如下所示:

myViewController *myVC = [[myViewController alloc] init];
[myVC generate:myData];
[self.navigationController pushViewController:myVC animated:YES];
代码运行良好,但在检查内存泄漏时,我得到一个警告,myVC永远不会被释放

添加发布声明

[myVC release];

在第4行中,编译很好,但在执行时崩溃。我需要如何处理这个问题?

我猜这与这段代码无关。问题是以前,因为你没有在这里发布它,所以它从未被释放。现在,当您从导航堆栈中弹出视图控制器时,它正在解除分配,它正在调用
myViewController
dealloc
方法,并且一些字符串对象在其中被过度释放


大概在某个时刻,某个字符串变量在
myViewController
中设置而不保留它,或者在未设置为null的情况下释放它,然后再次释放它。

是的,应该释放视图控制器

您看到的错误消息是由于视图控制器内的内存管理问题导致的-似乎您过度释放了
NSString
对象。

您应该使用

myViewController *myVC = [[myViewController alloc] initWithNibName:nil bundle:nil]

在创建新的视图控制器时,似乎使用init而不是带有nil参数的initWithNibName会把pushViewController搞砸。这是一个花了我几个小时才解决的问题,因为它似乎与手头的问题无关

如果在pushViewController调用之后有release语句,那么它应该可以工作。错误消息是什么?当弹出上一个视图时会发生崩溃-错误[CFString release]:消息发送到解除分配的实例0x4950800(gdb),您在何处以及如何弹出视图?当我单击顶部视图控制器上的“上一步”按钮时,这甚至不会按编写的方式编译,并且与当前问题无关。