发生了最奇怪的事情......我有一个非常复杂的 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机制中的错误吗?