我理解调用的原因 message sent to deallocated instance 0xebba1b0
,这是因为我正在向不再在内存中的对象发送消息。
所以这是我的场景。我有一个 ZoomedViewController,里面有一个 UITableView。UITableView 有一个自定义的 UITableViewCell,它有一个属性标签作为子视图。当在属性标签上按下链接时(这反过来会触发 didSelectRowAtIndexPath),它会委托给我的 MainViewController 并在 MainViewController 中调用 closeZoomedImageVC 方法:
-(void) closeZoomedImageVC
{
[self.zoomedImageContainer_ removeFromParentViewController];
[self.zoomedImageContainer_.view removeFromSuperview];
}
问题是当触发 didSelectRowAtIndexPath 时, zoomedImageContainer_ 已经消失了。那我该如何解决呢?
为了更好地说明这一点,基本上当我这样做时:
[self performSelector:@selector(closeZoomedImageVC) withObject:nil afterDelay:1.0];
这不再导致崩溃,但这不是解决方案,因为它很hacky。它的作用是让 didSelectRowAtIndexPath 在被释放之前首先被执行。