【发布时间】:2012-12-23 21:54:32
【问题描述】:
发生了最奇怪的事情......我有一个非常复杂的 UIViewController 子类,我正在通过一个 NIB 文件加载它。 我只需执行以下操作即可推送视图:
SecondViewController2 *secV = [[SecondViewController2 alloc] initWithNibName:@"SecondViewController2" bundle:nil];
self.secondViewController2 = secV;
[secV release];
[self.navigationController pushViewController:secondViewController2 animated:YES];
[secondViewController2 release];
secondViewController2 = nil;
如你所见,我发布了 secondViewController2。
问题是,当我第一次执行它时,在 secondViewController2 中调用了尽管 dealloc 方法,我仍然在仪器中观察到额外的 2MB 似乎没有被释放。没有任何泄漏,我已经检查过了。
当我第二次、第三次、第四次等执行以下操作时,将调用 dealloc 并且我没有观察到内存中的任何添加。仅此一点就使我确信我没有在我的代码中执行错误,因为相同的代码正在第一次、第二次第三次运行,但只有第一次没有释放大约 2MB。正如我所说,secondViewController2 的 dealloc 仍在运行!!!
有什么想法吗?它是Apple机制中的错误吗?
【问题讨论】:
-
最好尝试 italic 或 bold 或 both 而不是全部大写。另外,
format the code. -
请您显示属性 secondViewController2 的设置以及您用于它的 ivar 和综合。
-
双重分配有什么用?你不能直接推
secV然后释放吗? -
刚刚这样做(使用 secV)仍然存在问题...我可以忍受第一次启动时添加几 KB 但在我的情况下它是 2MB...
标签: iphone objective-c cocoa-touch ios4