IOS記憶體引用計數筆記

來源:互聯網
上載者:User

IOS中的objective-c採用引用計數方式管理記憶體,最近在寫動畫效果的時候遇到了記憶體泄露問題。

關於對象的delegate聲明,在objective-c的編程指南中推薦的是使用assign來聲明,如果才用retain等增加引用計數的聲明方式,管理不當就很容易出現循環參考問題,造成記憶體無法被釋放。但這次寫動畫發現一個例外,即CABasicAnimation的delegate在賦值時會將對象的引用計數加一。當CABasicAnimation的removeOnCompletion為NO時,動畫結束以後並不會被移除,最終形成一個循環參考,對象無法被釋放掉。在指定了Animation的delegate後,不要將動畫的removeOnCompletion設定為NO。在不確定動畫是否執行完成時,最好調用CALayer的removeAnimationForKey方法將動畫手動移除。參考:CABasicAnimation的delegate

關於順延強制方法-(void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimerInterval)delay;在調用時同樣會將調用它的NSObject的引用計數加1,在需要釋放記憶體之前,需要調用對應的+(void)cancelPreviousPerformRequestsWithTarget:(id)aTarget;方法,將隊列中的請求清空。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.