我有太多次发布视图的问题。虽然理论上很简单,因为我将 uiview 移动到 uiview,它是 uiview 的一个子类并且被动画等等它不是我可以轻易修复的东西。它只会在某些条件下崩溃 10%,即使在这些条件下也只有 30% 的时间。
所以换句话说,它有点复杂。有时在我的 dealloc 方法中,此 UIView 的保留计数已经为 1(在释放视图时被释放),因此不应再次释放。所以我做的是这样的:
if ([mainView retainCount] > 1) {
NSLog(@"released");
[mainView release];
}
通常会调用与发布的崩溃一致的方法,但并非总是如此,而且当我有时期望它崩溃时,它几乎会发生。我已经用这段代码检查了泄漏,它永远不会泄漏。
现在的实际问题......由于保留计数而释放某些东西是错误的吗?我已经尝试了许多不同的方法来解决这个问题,到目前为止,这是唯一可靠且不泄漏的方法。
编辑:如果没有,那么将一个 UIView 复制到另一个 UIView 的更好方法是什么?
mainView = newView;
[newView release];
我试过先释放 mainView 然后在 newView 上调用 copy 但这会崩溃。上面的方法也很完美,除了保留计数有时比预期的低 1,即使它从未在代码中的其他任何地方发布。