OC的理解與特性
. OC是一門面向?qū)ο蟮恼Z言,三大特性:封裝 繼承 多態(tài)。靜態(tài)語言特性(C++)攀细,動態(tài)語言的效率(動態(tài)綁定 動態(tài)加載)
. OC動態(tài)特性 動態(tài)類型(運行時再決定對象的類型 如: id類型) 動態(tài)綁定(對象實例化后效扫,其屬性和方法也都確定) 動態(tài)加載(不是一開始就加載所有的資源,而是執(zhí)行代碼到一定位置再記載所需的資源(不同機型的適配)) 運行時(基于run time)
內(nèi)存管理基本原則
MRC : 誰創(chuàng)建 誰釋放 誰引用 誰管理
ARC : 管理是系統(tǒng)自動管理定鸟,strong 和weak關(guān)鍵字 strong指向的對象retain count = 0時候,就會自動回收,weak指向的新值不存在時,其指針自動=nil
一般的注意事項
- 全局變量和局部變量 基本上都用_strong修飾
- 局部變量除了作用域怀喉,指針為nil
- 方法內(nèi)部創(chuàng)建對象,外部使用需要添加_autorelease
- 連線的時候船响,用_weak
- 代理 用assign
- block為了避免循環(huán)躬拢,使用_weak描述
- 聲明屬性不要以new開頭
- 非ARC工程中采用ARC去編譯某些類:-fobjc-arc
- 在ARC工程中采用非ARC去編譯某些類:-fno-fobjc-arc.
理解MVC設計模式
- Model 負責存儲 定義 操作數(shù)據(jù)
- View 用來展示給用戶 和用戶交互
- Controller 是Model 和 View的協(xié)調(diào)者。 Model 和 View不能直接進行通信见间。view和controller通信利用代理協(xié)議 model和controller通信利用notification和kvo
理解MVVM設計模式
- viewModel層 就是view和model的粘合劑聊闯,基本上就是view controller的業(yè)務邏輯和頁面邏輯等剝離出來放到view model層
category優(yōu)缺點
優(yōu)點
- 不要通過子類增加現(xiàn)有類的方法,類目中的方法和原始類的方法基本沒有區(qū)別
- 通過類目可以將龐大一個類的方法進行劃分米诉,從而便于代碼的日后維護 更新以及提高代碼的閱讀性
缺點
- 無法向類目中添加實例變量(只能通過子類)
- 不要覆蓋父類中的方法菱蔬,有可能會導致 super的斷裂
類別的作用
- 給系統(tǒng)原有類添加方法,不能擴展屬性史侣。
- 聲明私有方法拴泌,某一個方法只實現(xiàn),不聲明惊橱,相當于私有方法
- 類別不能聲明變量蚪腐,類別不可以直接添加屬性。
代理的作用
- 代理又叫委托税朴,是一種設計模式回季,代理是對象與對象之間的通信交互,代理接觸了對象之間的耦合性
- 改變或傳遞控制鏈正林。
- 修飾用assign : 防止循環(huán)引用
include 和 import泡一,import 與@class的區(qū)別
- include 和 import效果相同,都是查詢類中定義的方法
- import不會引起重復編譯
- class 定義了類的名稱觅廓,一般用于.h中
- class 比 import 編譯效率更高
- class import 區(qū)別在于解決了引用死鎖的問題
@public @protected @private 含義與作用
- @public : 對象的實例變量作用域 在任何地方都可以訪問
- @protected : 對象的實例變量作用域 在本類和子類都可以訪問
- @private : 實例變量的作用域只能在本類中方法
內(nèi)存優(yōu)化
- 重用機制 : 盡量用重用機制
- 盡量把view設置成不透明
- 不要使用復雜的xib/storyboard
- 選擇正確的數(shù)據(jù)結(jié)構(gòu)
- 延遲加載
- 數(shù)據(jù)緩存
- 處理內(nèi)存警告
- 避免反復處理數(shù)據(jù)
- 使用Autorelease Pool
- 正確選擇圖片加載方式