問(wèn)題1:多個(gè)頁(yè)面無(wú)法成功dealloc浑劳,內(nèi)存沒(méi)有被釋放.界面的循環(huán)引用問(wèn)題
問(wèn)題2:某頁(yè)面成功dealloc诅蝶,但是仍有內(nèi)存殘留,從[UIImage imageNamed:@""],改成imageWithContentsOfFile
問(wèn)題3:block引用self要慎重,如果self釋放后仍有業(yè)務(wù)邏輯要在block中運(yùn)行沿腰,可以再對(duì)weakSelf強(qiáng)引用一下。
問(wèn)題4:GPUImage處理拍照的時(shí)候,內(nèi)存穩(wěn)定不明增長(zhǎng),只在debug的時(shí)候?qū)е聝?nèi)存崩潰摆昧,release的時(shí)候并不會(huì)造成內(nèi)存溢出,所以可以不必管它蜒程。
25個(gè)性能優(yōu)化/內(nèi)存優(yōu)化常用方法:
- 用ARC管理內(nèi)存
- 在正確的地方使用 reuseIdentifier
3.盡量把views設(shè)置為透明,opaque屬性為YES
4.避免過(guò)于龐大的XIB
5.不要阻塞主線程 - 在Image Views中調(diào)整圖片大小
- 選擇正確的Collection,(Arrays, Dictionaries, Sets)
- 打開gzip壓縮
- 重用和延遲加載(lazy load) Views
- Cache:一個(gè)極好的原則就是绅你,緩存所需要的,也就是那些不大可能改變但是需要經(jīng)常讀取的東西昭躺。
11.權(quán)衡渲染方法:總得來(lái)說(shuō)忌锯,你需要權(quán)衡一下利弊,到底是要性能能還是要bundle保持合適的大小领炫。
12.處理內(nèi)存警告
13.重用大開銷對(duì)象 - 使用Sprite Sheets
Sprite sheet可以讓渲染速度加快偶垮,甚至比標(biāo)準(zhǔn)的屏幕渲染方法節(jié)省內(nèi)存。
15.避免反復(fù)處理數(shù)據(jù):比如你需要數(shù)據(jù)來(lái)展示一個(gè)table view,最好直接從服務(wù)器取array結(jié)構(gòu)的數(shù)據(jù)以避免額外的中間數(shù)據(jù)結(jié)構(gòu)改變帝洪。
16.選擇正確的數(shù)據(jù)格式
17.正確設(shè)定背景圖片: colorWithPatternImage,小圖平鋪 - 減少使用Web特性
- 制作陰影時(shí)設(shè)定Shadow Path,使用shadow path的話iOS就不必每次都計(jì)算如何渲染似舵,它使用一個(gè)預(yù)先計(jì)算好的路徑。但問(wèn)題是自己計(jì)算path的話可能在某些View中比較困難葱峡,且每當(dāng)view的frame變化的時(shí)候你都需要去update shadow path.
- 優(yōu)化Table View
21.選擇正確的數(shù)據(jù)存儲(chǔ)選項(xiàng) - 加速啟動(dòng)時(shí)間
- 使用Autorelease Pool
- 選擇是否緩存圖片
- 避免日期格式轉(zhuǎn)換 Unix時(shí)間戳 >C > NSDateFormatters
更詳細(xì)的可以看https://blog.csdn.net/YLGWHYH/article/details/52073036