【问题标题】:Removing a view from it's superview causes memory error - why?从其超级视图中删除视图会导致内存错误 - 为什么?
【发布时间】:2010-03-11 12:06:58
【问题描述】:

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 = ... 的保留属性,动画完成后,我只想摆脱那个视图。所以我将它从它的 superview 中删除,然后将我的属性设置为 nil,这让它消失 - 理论上。

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

【问题讨论】:

    标签: iphone cocoa-touch memory-management


    【解决方案1】:

    SDK 3.0 中的 Simulator 中存在可能导致该错误的错误:

    iPhone development: pointer being freed was not allocated

    在 3.1+ 的 Simulator 或任何 SDK 版本的设备上都不会出现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多