0

我一直面临着一个奇怪的问题,即取消模态视图。

我提出一个这样的模态视图:

 ResepiDetail *detail =(ResepiDetail*)[[ResepiDetail alloc]init];
 [self presentModalViewController:detail animated:YES]; 

并使用后退按钮将其关闭:

[self dismissModalViewControllerAnimated:YES];

在此之后,视图将自行关闭并返回到前一个视图,但它不会从内存中释放自己。我通过发送通知消息发现了它,并且该视图收到了它。此外,我尝试跟踪 VM 内存分配,并且该视图似乎仍在内存中。

我正在使用 ARC,并且将相同的方法用于另一个完美的视图。

4

1 回答 1

0

代码很好,正如发布的那样,所以这里有一些关于如何继续的提示:

确定您的视图控制器没有被释放的可靠方法是覆盖 dealloc 并记录可识别的内容。您仍然可以在 ARC 中执行此操作,只是不要显式调用super. 如果您没有按预期看到日志,那么您就有问题了。

假设你已经确定你绝对有问题,那么问题就变成了寻找保留周期。如果问题是一个实例ResepiController没有被释放,那么你需要寻找......

  1. ResepiController类之外的任何strong引用它的代码。例如,如果您的班级注册为其他班级的代表,请确保该代表没有使用strong引用。
  2. 可能已隐式保留的任何内部块self。在您认为应该发布的时候,您的程序中是否有任何块可能引用了您的控制器?
于 2012-08-15T15:17:32.817 回答