gpt4 book ai didi

iphone - TableView :didSelectRowAtIndexPath:]: message sent to deallocated instance 0xebba1b0

转载 作者:行者123 更新时间:2023-11-28 22:50:11 26 4
gpt4 key购买 nike

我明白为什么调用 message sented to deallocated instance 0xebba1b0 的原因,这是因为我正在向一个不再存在于内存中的对象发送消息。

这是我的场景。我有一个 ZoomedViewController,其中有一个 UITableView。 UITableView 有一个自定义的 UITableViewCell,它有一个属性标签作为 subview 。当在属性标签上按下链接时(依次触发 didSelectRowAtIndexPath),它委托(delegate)给我的 MainViewController 并调用 MainViewController 中的方法 closeZoomedImageVC:

-(void) closeZoomedImageVC
{
[self.zoomedImageContainer_ removeFromParentViewController];
[self.zoomedImageContainer_.view removeFromSuperview];
}

问题是当 didSelectRowAtIndexPath 被触发时,zoomedImageContainer_ 已经消失了。那我该如何解决呢?

为了更好地说明这一点,基本上当我这样做时:

 [self performSelector:@selector(closeZoomedImageVC) withObject:nil afterDelay:1.0];

这不会再导致崩溃,但这不是解决方案,因为它很老套。它的作用是让 didSelectRowAtIndexPath 在被释放之前先被执行。

最佳答案

ZoomedViewController 中存储对 UITableView 的引用:

@property (nonatomic, strong) IBOutlet UITableView *tableView;

确保在 Interface Builder 中连接 socket 。现在,当您的 zoomedImageContainer_.view 被删除时,它不会释放 UITableView,直到您也释放该引用。

您还需要在 MainViewController 中存储对您的 ZoomedViewControllerstrong 引用,并且仅将其设置为 nil 在将所选行保存回 MainViewController 之后。

关于iphone - TableView :didSelectRowAtIndexPath:]: message sent to deallocated instance 0xebba1b0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12189567/

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