问题 是否发布了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];

现在,当我打电话:

[view removeFromSuperview];
[view release];

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

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


10349
2017-07-26 22:32


起源



答案:


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


13
2017-07-26 22:34



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


答案:


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


13
2017-07-26 22:34



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