2013-07-09 67 views
2

如果我有嵌套的子視圖,如果我調用removefromsuperview,所有子視圖都會被處理嗎?removefromsuperview是否刪除子視圖?

僞代碼:

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]; 

然後buttonC按:

[viewA removeFromSuperView]; 

所有的觀點都從屏幕上消失,但他們正確刪除? 我是否需要手動刪除所有視圖?

+0

處於什麼意義?如果你在視圖上調用'removeFromSuperview',它只會從它的超級視圖中移除該視圖,它不會從它的子視圖中移除它。當然,即使前者可以導致所有視圖的**分配**,如果它們的唯一引用計數是由超級視圖保存的話。 – 2013-07-09 15:21:16

回答

8

所有視圖都將被刪除。如果您保留strongviewA的引用,則所有視圖將仍然存在,並且可以稍後再次添加。如果你不這樣做,它們都將被銷燬。

2

只要你有你的觀點A..C沒有其他的引用,它們將被刪除和銷燬

1

您可以檢查很容易。創建uiview的子類,覆蓋它的dealloc方法並在那裏設置制動點。創建此類的實例並將其作爲子視圖添加到您的視圖中。 當您在視圖中調用removeFromSuperview時,brakepoint將被激活。

就是這樣。

相關問題