我将我的 UIViewController 子类推到导航堆栈上;然而,由于它被导航控制器保留,我在将它推入堆栈后“释放”指向它的指针,以便当它最终弹出时,viewController 将被释放。
但是,它不起作用,viewController 的 dealloc 方法永远不会被调用。代码看起来像这样:
MyViewController *newViewController =
[self.storyboard instantiateViewControllerWithIdentifier:@"foo"];
[self.navigationController pushViewController:newViewController animated:YES];
newViewController = nil;
即使在下面的代码中,我的 newViewController 也没有被释放:
MyViewController *newViewController =
[self.storyboard instantiateViewControllerWithIdentifier:@"foo"];
newViewController = nil;
据我了解,在新的自动引用计数(ARC)系统下,一旦没有任何东西指向它,对象就会被解除分配。我在正在创建的 viewController 的 dealloc 方法中放置了一个 NSLog 方法,但它从未被调用过。
我在这里想念什么?!
感谢您阅读我关于堆栈溢出的第一篇文章 :)
**编辑:* *
我道歉。我尝试了包装在自动释放池中的第二段代码,它被释放了。然后我在没有自动释放池的情况下尝试了它,它也正确释放了。我不知道昨晚发生了什么。
(第二次编辑:现在它又停止工作了。fffffffuuuuuuuuuuuu)