tinypng
壓縮PNG圖片。視頻能夠經過 Final cut等軟件進行分辨率壓縮。音頻則下降碼率便可。LaunchScreen.storyboard
,啓動圖在一個項目資源中佔比其實蠻大的,可是使用 LaunchScreen.storyboard
只須要設置一張ImageView便可。IconFont的
使用很方便,項目中圖標太多或者隨時須要轉換圖標顏色的話,建議使用Realm
Realm
,聽說是目前是性能最好的移動端數據庫。可是在三方庫中能夠看到,Realm
的支持佔了很大的比重,大約在 8M 左右。可是若是使用 FMDB
話只須要192KB,而 CoreData
幾乎能夠忽略不計。數據庫
重複代碼的審覈、無用的開源庫刪除緩存
Assets.xcassets
中;並使用imageWithContentsOfFile
加載不讓系統緩存Assets.xcassets
中讓系統緩存,使用imageNamed
加載非逃逸閉包是有利於內存優化的,因此儘可能使用非逃逸閉包性能優化
NSSet
(用hash實現)和NSArray
功能性質同樣,用於存儲對象,屬於集合。可是和NSArray
不同的是它屬於 「無序集合」,在內存中存儲方式是不連續的,而NSArray
是「有序集合」它內存中存儲位置是連續的。 因此在集合中尋找一個元素的時候使用NSSet
,而若是須要循環集合中的全部對象來找到所須要的目標則使用NSArray
服務器
對象的建立和銷燬,對象屬性的調整、佈局計算、文本的計算和排版、圖片格式轉碼和解碼、圖像的繪製(Core Graphics
)閉包
紋理的渲染(OpenGL
)併發
CPU
計算控件的位置、大小CPU
會將這些數據提交給GPU
來進行渲染FrameBuffer
視頻控制器
從FrameBuffer
讀取的數據顯示在顯示器
上因爲垂直同步的機制,若是在一個 VSync 時間內,CPU 或者 GPU 沒有完成內容提交,則那一幀就會被丟棄,等待下一次機會再顯示,而這時顯示屏會保留以前的內容不變。這就是界面卡頓的緣由。異步
從上面的圖中能夠看到,CPU 和 GPU 不論哪一個阻礙了顯示流程,都會形成掉幀現象。因此開發時,也須要分別對 CPU 和 GPU 壓力進行評估和優化。佈局
CAlayer
取代UIView
UIVIew
的相關屬性,好比frame
、bounds
、transform
等屬性,儘可能減小沒必要要的修改Autolayout
會比直接設置frame
消耗更多的CPU資源UIImageView
的size
保持一致GPU
能處理的最大紋理尺寸是4096x4096,一旦超過這個尺寸,就會佔用CPU
資源進行處理,因此紋理儘可能不要超過這個尺寸指的是在GPU在當前屏幕緩衝區之外開闢一個緩衝區進行渲染操做性能
致使產生離屏渲染的緣由:優化
可經過 Instruments 的 Core Animation 檢測離屏渲染。
cell
的高度,緩存在相應的數據源模型中,減小CPU
的計算時間Storyboard
、Xib
等使用度