从它的超视图中删除视图会导致内存错误 - 为什么?

时间:2010-03-11 12:06:58

标签: iphone cocoa-touch memory-management

Xcode向我抛出错误:

  

malloc: *对象的错误   0x103f000:被释放的指针不是   分配   * 在malloc_error_break中设置断点以进行调试

我跟踪代码,直到我执行此操作的行:

- (void)inputValueCommitted:(NSString *)animationID finished:(BOOL)finished context:(void *)context {
        // retainCount of myView is 2! (one for the retain-property, one for beeing a subview)
        [self.myView removeFromSuperview]; // ERROR-LINE !!
        self.myView = nil;
}

当我删除该错误行时,错误消失了。总而言之:我无法摆脱我的观点!

这是一个UIImageView,里面没有别的东西,只是显示一个图像。我这样做是:我创建一个UIView动画块,创建UIImageView,使用self.myView = ...将其分配给一个retain-property,并在动画完成后,我只想摆脱那个视图。所以我从它的superview中删除它,然后将我的属性设置为nil,这让它消失了 - 理论上。

有没有其他人遇到过这样的问题? iPhone SDK 3.0。

1 个答案:

答案 0 :(得分:1)

SDK 3.0中的模拟器中存在可能导致该错误的错误:

iPhone development: pointer being freed was not allocated

3.1+中的模拟器或任何SDK版本下的设备上都不会出现这种情况。