Search code examples
iosobjective-cios6

Does removefromsuperview remove subviews?


If I have nested subviews, will all subviews get disposed if i call removefromsuperview?

Pseudocode:

UIView *viewA = [[UIView alloc] initWithFrame:CGRectMake(0 , 0, 100, 100)];
[self.view addSubview:viewA];
UIView *viewB = [[UIView alloc] initWithFrame:CGRectMake(25 , 25, 50, 50)];
[viewA addSubview:viewB];
UIButton *buttonC = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[viewB addSubview:buttonC];

And then buttonC is pressed:

[viewA removeFromSuperView];

All views are removed from the screen, but are they removed properly? Do I need to remove all views manually?


Solution

  • All views will be removed. If you maintain a strong reference to viewA then all of the views will still be there and can be added again later. If you don't, they will all be destroyed.