1.NSOperation的做用:ios
(1)是oc語言中基於GCD的面向對象的封裝數組
(2)不用關心線程以及線程的生命週期緩存
NSOperation抽象類,經過子類 或者系統提供兩個子類。安全
隊列;一個操做只能被添加到一個隊列網絡
NSBlockOperation:建立一個操做;添加操做到隊列(併發隊列異步執行)併發
GCD是ios4.0推出的 主要針對多核cpu作了優化 是c語言的技術app
最大併發數:同時執行的任務數異步
暫停取消恢復:建立一個隊列->懶加載(最大併發數)->for-in添加操做到隊列->延時1秒->優化
暫停隊列[self.queue setSuspended :YES]隊列默認Suspended是no 暫停的是隊列中尚未被運行的操做 正在運行的操做不能經過此方法暫停; 繼續隊列:[self.queue setSuspended :NO]; 取消隊列:[self.queue cancelAllOperations]取消隊列中沒有被運行的操做 正在被運行的操做不能經過此方式取消 (當隊列suspended == YES時 往隊列中再添加操做 不運行)spa
拿到隊列中的操做數:(self.queue.operationCount)
操做的優先級(服務質量): 優先級高的不必定先執行
隊列的優先級:優先級高的不必定比優先級低的先運行,有更多的可能被cpu調度
操做依賴:addDependency 能夠跨隊列設置依賴關係 操做加入到隊列以前設置 同步任務
圖片下載: Model ->//字典轉模型 //懶加載->ATS配置顯示界面->圖片->模擬網絡慢->開啓子線程->線程通訊->添加操做到隊列
app出現的問題:(1)圖片顯示不出來 ( 由於沒有frame) ;(2)當點擊或者拖動界面 圖片纔出來: cell中的圖片是懶加載;(3)設置佔位圖片:cell一開始建立的時候 就生成imageview的frame(4)自定義cell:每次滾動都下載圖片浪費流量(5)內存緩存:保存圖片到內存緩存 (6)當網速很慢的時候 來回滾動 一個圖片開啓多個下載操做 :建立可變數組用於記錄執行下載操做 操做緩存 (7)操做緩存 內存不夠用:清除內存緩存:清空操做緩存(8)沙盒緩存:存儲圖片到沙盒
UI線程不安全
Emily.Wang