0

我想知道我是否可以在 UIView 上调用 willMoveToSuperview ,然后保留该视图以供以后重用?类似以下的东西

    if (!CGRectIntersectsRect(cell.frame, visibleRegion)) {
    [cell willMoveToSuperview:nil];
    [self.resuableCells addObject:cell];
}
4

2 回答 2

1

我不确定你在这里的意图......

但是WillMoveToSuperview - 根据文档:

此方法的默认实现什么也不做。每当父视图更改时,子类可以覆盖它以执行其他操作。

所以你的代码,

[单元格 willMoveToSuperview:nil];

除非您在单元子类中覆盖此方法并在那里实现您自己的逻辑,否则无效。

来到你的问题 -

willMoveToSuperview 是否也会释放调用它的 UIView?

答案很明显——不。

于 2013-11-01T01:39:54.123 回答
0

willMoveToSuperview 是一个观察者方法,系统出于礼貌而调用它,以便在它完成其他一些隐藏任务之前让您有机会处理特殊情况。

它的默认行为是什么都不做,但您可能希望在移动之前通过覆盖此方法来整理代码中的某些内容。

一个合适的用例可能是,如果您有一个正在播放视频剪辑或动画的视图,而您的代码中的其他内容即将将该视图从其当前层次结构中剥离出来,并将其放置在其他一些不相关的视图层次结构中。您可能希望有机会在移动发生之前暂停剪辑或暂停动画。

我怀疑这是处理您尝试的正确方法,我绝对知道您不应该直接调用它。

随意发布更多代码,向我们展示您要完成的工作以及出错的地方。

于 2013-11-01T01:42:51.413 回答