cocos2d-x學習筆記記憶體管理之autorelease

來源:互聯網
上載者:User

  轉載自:http://hi.baidu.com/357802636/item/7bb3e71a7838efd6be904200

  

  主要是最後的總結好:

  

在每一幀繪製完成之後,當前的自動釋放池將會被清理,所有調用了autorelease操作的對象都會被調用release方法,減少其引用計數。如果我們建立的對象調用了autorelease,那麼在稍後幀繪製之後,自動釋放池被清理的時候此對象的引用計數將被減1,此對象如果沒有在其他地方被

retain,那麼它將會被釋放掉。

    在對象的使用上,為保證對象能被正確的釋放,需要時刻知道此對象的引用計數為多少,但是很多時候能做到這點很難,除非對所有的介面都很瞭解,知道其中是否對當前對象做了retain操作或者release操作,如果做不到這點,可以按照cocos2d-x架構中這樣的原則去做

    1、作為參數傳進來的對象,如果你要長期的使用或者管理它,請 retain,不用的時候記得release

    2、作為參數傳進來的對象,他不是你建立或者retain的,如果你不確定他從哪裡來,外面是否知道你會release掉他,請別隨便調用release

    3、如果你撇開自動釋放池,new了一個對象而不調用autorelease,在不使用的時候直接將對象delete掉,這樣的做法是很不安全的,除非你建立的對象真的只有你在使用而沒有被其他對象retain。但並非代表你不能自己new和delete管理對象,因時而異。

    4、建立一個新的對象,調用了對象的autorelease方法,如果想長期的使用他,請使用retain方法(包括addChild到自身,addObject到某個

CCArray中),清除時使用release方法(removeChild、CCArray的removeObject等)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.