Iphone 从SuperView自动删除don';不要释放自我?

Iphone 从SuperView自动删除don';不要释放自我?,iphone,uiview,crash,Iphone,Uiview,Crash,我动态地将一个子视图添加到另一个uiview 在子视图中,单击按钮以通过以下方法返回: [self removeFromSuperView ]; 但在manny times添加子视图并将其删除后,我的应用程序可能会崩溃,日志称它已被杀死 我发现调用[self removeFromSuperView]并没有释放self。那么发布它的最佳方法是什么呢?看起来您正在将保留视图添加为子视图。它的父视图将再次保留它。 因此,当您使用cell[self removeFromSuperView]它从supe

我动态地将一个子视图添加到另一个uiview

在子视图中,单击按钮以通过以下方法返回:

[self removeFromSuperView ];
但在manny times添加子视图并将其删除后,我的应用程序可能会崩溃,日志称它已被杀死


我发现调用
[self removeFromSuperView]
并没有释放self。那么发布它的最佳方法是什么呢?

看起来您正在将保留视图添加为子视图。它的父视图将再次保留它。
因此,当您使用cell
[self removeFromSuperView]它从superView获得释放消息,但仍必须由创建者释放。

如果在创建时保留UIView(或将其添加到数组),则保留计数将增加。例如:

// Retain count is 1
UIView *myView = [[UIView alloc] initWithFrame:myFrame];

// Retain count is 2
[myParentView addSubview:myView];

// Retain count is 1 again
[myView removeFromSuperView];
在上面的示例中,如果视图立即添加为子视图,则可以
自动释放该视图;如果视图是iVar,则可以在dealloc中释放该视图

编辑:(您的视图可能被保留的其他原因)

文档中声明保留该财产的任何其他内容


在VC的loadView方法中创建对象时也要小心,如果确实要释放它们,因为调用loadView时会再次创建它们。如果卸载VC的视图,然后重新加载,就会发生这种情况。

u应该首先释放。“alloc”的对应项是“release”,而“addSubview”的对应项是“removeFromSuperView”:保持这些平衡

添加视图:

UIView *myView = [[UIView alloc] initWithFrame:myFrame];
[myParentView addSubview:myView];
[myView release];
移除视图(从SuperView移除后,视图将在内存中清除):


发布将子视图添加到parentview中的代码。发布一些代码,以便我们能够理解我添加子视图的方式:UIView*myView=[[UIView alloc]initWithFrame:myFrame];[myParentView添加子视图:myView];添加后不会发布。因为,当我调用[self-removeFromSuperView]时,应用程序有时会崩溃;您好xxhp,如果您创建应用程序(保留1)、添加子视图(保留2)、发布视图(保留1)、从superView中删除(版本0、视图解除锁定),应用程序将崩溃。添加子视图(崩溃)。听起来你需要使用iVar,创建你的视图,并在VC的dealloc中发布它,如果你想让它继续存在,那么你可以从SuperView中添加和删除它。如果是这种情况,那么视图将不会解除锁定,直到您的VC也解除锁定。同样,您可以在loadView中创建它,并在viewDidUnload中释放它。希望这有帮助,戴夫
UIView *myView = [[UIView alloc] initWithFrame:myFrame];
[myParentView addSubview:myView];
[myView release];
[myView removeFromSuperView];