[Not A Type release]:发送到解除分配的实例0x5853f00的消息

时间:2011-09-14 04:38:32

标签: iphone ios

[Not A Type release]:发送到解除分配的实例0x5853f00的消息收到此错误请在添加视图时提供帮助

AnotherView* obj = [[AnotherView alloc] init];
[self.view addSubview:obj.view];
[obj release];

3 个答案:

答案 0 :(得分:1)

您正在将[UIView视图]添加到当前视图。 UIView内没有视图属性。

正如所指出的,你应该自己添加UIView对象。

在OpenGL环境中,您还应该考虑文档的内容:

  

注意:如果您使用OpenGL ES进行绘图,则不会调用视图的drawRect:方法。相反,您需要确定何时需要重新绘制视图并启动相应的绘图更新。

因此请确保您的UIVIew已正确初始化。

答案 1 :(得分:1)

当您向已发布的实例发送消息时,通常会出现此错误。所以我在你的代码中怀疑的是,你创建了一些视图然后将它添加到其他视图并释放了之前创建的视图。现在,如果对第一个视图(已经发布)执行任何操作将导致异常。 即:First View包含一个按钮,此按钮的内部触摸操作是用FristViewController编写的。现在我创建了FirstView的实例并添加到第二个视图中并发布了firstview实例。现在假设用户点击FirstView的按钮,iOS将搜索已经发布的控制器(FirstViewController),并且会出现此问题。 要摆脱这个问题,您只需向实例发送自动释放消息即可正常工作。

发生这种情况的主要原因是,addSubview不会处理保留计数。 我希望这会对你有所帮助。

答案 2 :(得分:0)

你不能释放obj因为[self.view addSubview:obj.view]只添加obj而不是整个对象的视图。 如果您释放它并且您的视图在屏幕上可见,那么可能会将某些消息发送到解除分配的对象,因此会导致崩溃。