gpt4 book ai didi

ios - UIViewController 未释放

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:36:58 26 4
gpt4 key购买 nike

我遇到这个问题有一段时间了,并尝试了几种方法来避免它,但现在我决定一劳永逸地解决它:)

我有一个聊天 View Controller ,它使用 KVO 观察 NSSet,ChatVC 有一个 UITableView,每次将新的 ChatMessage 插入到 NSSet 时,它也作为 UITableViewCell 添加到 TableView 。

现在,我的问题不在于观察,我猜它在某种程度上与内存管理有关。在我的 ChatVC 中,永远不会调用 dealloc 方法,因此 vc 始终在后台观察 NSSet 对象。

我已经尝试手动删除 viewWillDisappear 上的观察者,但 ChatVC 仍在后台。

使用 Instruments 对其进行分析表明它实际上来自导致 ChatVC 的 pushViewController:

MZChatViewController* chatViewController = [[MZChatViewController alloc] initWithNibName:@"MZChatViewController" bundle:nil];
chatViewController.shouldShowIndetermineConnectingIndicator = showIndicator;

// instruments shows 100% on this row
[self.navigationController pushViewController:chatViewController animated:animated];

chatViewController = nil;

在这里稍微搜索一下,谷歌实际上没有给我任何帮助,我已经通过了那个 VC 中的所有代码,并且真的努力寻找一个保留的循环,它也可能导致这个没有重新分配的问题,但一无所获。

附言。Xcode 5、iOS 7 SDK、ARC

已解决:显然这与 pushViewController:animated: 方法无关,Instruments 只是将此点标记为保留周期的原因,因为它正在触发一个在 viewDidLoad 上运行的 NSTimer。所以在 viewWillDisappear 中使该计时器无效解决了这个问题。

最佳答案

虽然这不是这里的问题,但也许这会帮助遇到类似问题的其他人解除分配 UIViewController。

我们的 UIViewController 没有被释放,因为自定义委托(delegate)属性持有强引用。

关于ios - UIViewController 未释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21501736/

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