Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone dealloc非常奇怪的行为-没有接到电话_Iphone_Uiviewcontroller_Delegates_Dealloc - Fatal编程技术网

Iphone dealloc非常奇怪的行为-没有接到电话

Iphone dealloc非常奇怪的行为-没有接到电话,iphone,uiviewcontroller,delegates,dealloc,Iphone,Uiviewcontroller,Delegates,Dealloc,我已经测试了我的所有ViewController方法。所有人都能在调用popViewControllerAnimated时正确地调用 但只有1个控制器的dealloc方法未被调用。我想不出这个问题 在按下该控制器时,我正确地编写了以下代码: AController *contr = [AController alloc]initWithNibName:nil bundle:nil]; [self.navigationController pushViewController:contr anim

我已经测试了我的所有ViewController方法。所有人都能在调用popViewControllerAnimated时正确地调用

但只有1个控制器的dealloc方法未被调用。我想不出这个问题

在按下该控制器时,我正确地编写了以下代码:

AController *contr = [AController alloc]initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:contr animated:YES];
[contr release];
当我从控制器回来时,我写下:

[self.navigationController popViewControllerAnimated:YES];

这是非常奇怪的行为,因为这段代码是在许多控制器上编写的,并且工作正常。

如果它没有被调用,它仍然是活动的。试着用仪器找到它。如果您在instruments中使用分配工具,您应该能够在分配列表中找到该类(按名称),并查看它是否仍然存在。您甚至可以看到它是由谁保留的(我假装类是人)。

如果没有调用dealloc,您可能会有另一个对象保留它


检查可能使用此委托的对象是否不保留它。

我遇到了类似的问题;我想显示一个
UIViewController
大约3秒钟(版权屏幕)。因此,我基本上是从主文件调用
PushViewCOntroller
popViewController
,而当我弹出视图控制器时,
dealloc
没有被调用

然后我从pushViewCOntroller切换到

[self.navigationController presentModalViewController:copyrightView animated:NO];

它开始工作了


我不知道它如何解决这个问题;但确实如此。

嗨,我知道这是一篇老文章,但这个答案可能会帮助那些陷于我的处境的人。花了很长时间试图找出dealloc没有接到电话的原因。事实证明,我并没有在ViewWillEnglishe方法中使NSTimer无效,因此它保留了retain计数

在这种情况下,这篇伟大的博文是人们必须阅读的:


对于我在分配viewcontroller时使用autorelease,希望这对其他人有所帮助

[[AController alloc]initWithNibName:nil bundle:nil]autorelease];

在我的例子中,我指定了具有强引用的循环引用对象类型。更改为弱类型修复了此问题。
尝试使用其他答案中所述的工具获取保留在内存中的对象。

控制器是UIViewController的子类吗?它有XIB文件吗?如果不是,为什么要用initWithNibName初始化它?可能是您的rootviewcontrollerMaybe在控制器中有一些属性无法释放,并且rhy contr没有解除分配?你能发布AController.h和AController.m吗?这是我所需要的,在我的非ARC项目中,不是我用来调用的dealloc方法。我使用工具“分配”,选择“已创建且仍然有效”,将统计信息更改为“对象列表”,注意“类别”显示类名,“责任库”检查“应用程序名称”。选择地址旁边的箭头将显示详细屏幕,并确保“RefCount”达到0。为了更容易调试,您可以为类名添加前缀,并在instruments->allocations搜索栏中查找项目类,从而节省调试时间
[[AController alloc]initWithNibName:nil bundle:nil]autorelease];