是否发布了UIView发布的所有子视图?

pop*_*850 11 iphone cocoa-touch uikit uiview

如果我有一个UIView,并且我在其中添加了一个已分配的子视图(在本例中为UIImageView),当我发布时UIView,也会UIImageView被释放?

我设置了我的视图和这样的子视图:

UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
UIImage *myImage=[UIImage imageNamed:@"image.png"];

// This is the subview:
UIImageView *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
imageView.image=myImage;

[view addSubview:imageView];
[imageView release];
Run Code Online (Sandbox Code Playgroud)

现在,当我打电话:

[view removeFromSuperview];
[view release];
Run Code Online (Sandbox Code Playgroud)

分配的imageView是否也会被释放,还是应该通过删除所有视图的子视图来删除它?

非常感谢您对此主题的任何见解.

Bil*_*ill 13

是.UIView"拥有"子视图,因此当它本身被dealloc'd时它会释放它们.

  • ...这并不是说子视图本身是dealloc'd,因为它们可能被其他东西(或其他几个东西)保留. (5认同)