gpt4 book ai didi

ios - 在 instantiateViewControllerWithIdentifier 之后 dealloc

转载 作者:行者123 更新时间:2023-11-29 10:54:11 25 4
gpt4 key购买 nike

我有一个问题:

ExploreViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ProfileViewController"];
vc.id_from = post.user_id;
[self.navigationController pushViewController:vc animated:YES];

如您所见,我实例化了 viewController 并将其推送到 navigationController 中。vc,应该是 autorelease ,但是 dealloc 方法永远不会被调用。

所以,如果我在推送之后释放 View Controller :

ExploreViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ProfileViewController"];
vc.id_from = post.user_id;
[self.navigationController pushViewController:vc animated:YES];
[vc release];

当我弹出 View Controller 时调用 dealloc 方法,但是如果我再次执行上面的代码,dealloc 会立即被调用并且应用程序崩溃,因为其他对象没有找到 vc。

所以,如果我不释放它,内存会越来越忙。

谢谢大家!

最佳答案

它没有被释放,因为当你:

[self.navigationController pushViewController:vc animated:YES];

UINavigationController 引用了 vc。所以基本上你有 2 个引用:

self.navigationController + ExploreViewController *vc = 2

在方法的最后你有一个:

self.navigationController = 1

一旦你从 UINavigationController 中弹出 vc,应该释放 vc 并调用 dealloc 方法.另一件事,你不应该在你不拥有的对象上调用 release。在这种情况下,instantiateViewControllerWithIdentifier 返回一个自动释放对象。

关于ios - 在 instantiateViewControllerWithIdentifier 之后 dealloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19147969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com