最近一直在作公司app內存優化相關事宜,排查別人的代碼,也能給本身一些警示。如今整理出一些內存管理出的問題,但願能幫助到你們。 git
解決步驟:在viewDidDisAppear中,發現retainCount爲6,證實此時這個ViewController還存在引用計數,查了各類self的引用以後,萬萬沒想到,十幾個地方都這樣: github
還記得我寫的這篇文章麼:記今天調試了一條迷の閃退問題。一開始我覺得是delegate的問題,可是萬萬沒想到...
當時本身一個不注意坑了本身,這回被同事坑了。這邊代碼是個不主作iOS方向的同事寫的,OC的默認類型是atomic , strong , readwrite,然而他並不知道。
問題緣由:內存不被釋放主要是self被delegate強引用了。由此還形成了一部分閃退問題,由於大部分通知的註銷都寫在dealloc中,因此通知沒法註銷,致使各類調用滿天飛,畫面太美不敢看。 緩存
解決步驟:instrument調試後,發現沒被釋放的全是imageIO,差很少就知道了,把讀圖的方式,從[UIImage imageNamed:@""],改爲imageWithContentsOfFile,就能夠了。 app
問題緣由:imageNamed讀取圖片的方法,會緩存在內存中,因此較大的圖片,仍是用imageWithContentsOfFile。
TIPs1:.xcassets裏的圖片沒法用imageWithContentsOfFile讀取;
TIPs2:imageWithContentsOfFile讀取圖片須要加文件後綴名如png,jpg等; 優化
解決步驟:
這個問題找了我好久,發現每次讀緩存(memory)的時候都不會有內存增長,而從磁盤(disk)讀取的時候,就會有問題。而後我就一步一步排查。最後在block裏發現了這個: atom
寫這段代碼的出來咱們聊聊人生。
"( *・ω・)✄╰ひ╯
問題緣由:block裏沒有使用弱引用,致使一直持有self得不到釋放。
TIPs:block引用self要慎重,若是self釋放後仍有業務邏輯要在block中運行,能夠再對weakSelf強引用一下。 spa
問題緣由:
喵神以前在博客發的一個問題
是Xcode7.1的問題。。只在debug的時候致使內存崩潰,release的時候並不會形成內存溢出,因此能夠沒必要管它。 debug
若是對你有用,點個喜歡唄~~大家的喜歡是我寫文的最大動力麼麼扎~ 調試