真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

iOSUIView的addSubview:和removeFromSuperview方法

問題描述:

為頭屯河等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及頭屯河網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、頭屯河網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

   一個UIView(bView)經(jīng)過alloc、init之后,add到UIView(aView)上,此時(shí)及時(shí)的對bView做了release操作。

   情況一、現(xiàn)在又有一個UIView(cView),我要做[cView addSubview:bView];那么在此之前有沒有必要做[bView removeFromSuperview];操作?

   情況二、在某種情況下(比如在按鈕的響應(yīng)事件里),我需要多次執(zhí)行[aView addSubview:bView];那么在每次add之前有沒有必要做remove操作?

       說明:情況一和二相互獨(dú)立的,沒有聯(lián)系。

結(jié)論是:

   兩種情況都不需要做remove操作。特別的情況二,如果做了remove操作,在做add操作會引起崩潰,原因是removeFromSuperview會執(zhí)行release操作,此時(shí)它的retainCount已經(jīng)是0了,內(nèi)存會被釋放。如果把上面release放到dealloc中就不會引起崩潰了。

官方文檔做依據(jù):

   If view already has a superview and that view is not the receiver, this method removes the previous superview before making the receiver its new superview.

個人理解:

   現(xiàn)在有一個勺子,一個杯子,一個缸子。前提是我將勺子放入杯子中了。

   情況一、我想將勺子放入缸子中,我所需要做的就是將勺子放入缸子中。因?yàn)镾DK會判斷出此時(shí)勺子在杯子中,它會自動執(zhí)行把勺子從杯子中拿出來的操作。

   情況二、我想將勺子放入杯子中,我所需要的還是將勺子放入杯子中。因?yàn)镾DK會判斷出此時(shí)勺子就在杯子中,它所執(zhí)行的就是什么都不做,因?yàn)樯鬃右呀?jīng)在杯子中了。

容易混淆的概念:

   這是針對同一個UIView的。還有一種情況,把bView加到aView上,此時(shí)又將cView加到aView上(bView和cView的frame相同)那么在這個時(shí)候是需要對bView做removeFromSuperview操作的。

   addSubview:所執(zhí)行的就是將UIView加到一個集合中,此時(shí)如果不移除bView,雖然不會造成內(nèi)存泄露,但是會浪費(fèi)內(nèi)存,沒有必要在集合中保存bView了(特殊需求除外)。


當(dāng)前標(biāo)題:iOSUIView的addSubview:和removeFromSuperview方法
當(dāng)前鏈接:http://weahome.cn/article/jhpccs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部