1.對象方法
>減號 - 開頭
>只能由對象調用
>對象方法中可以訪問成員變量(實例變量)
>對象方法中可以調用類方法
2.類方法
>加號 +開頭
>只能由類名調用
>類方法中不可以訪問成員變量(實例變量)
>類方法中不可以調用對象方法
>類方法中可以調用類方法(同名的除外)
允許有同名的對象方法和類方法,系統通過+ - 來區分
類方法的使用場合:
當方法中沒有使用到成員變量的時候儘量用類方法
>執行效率高(如果對象方法要現找到對象再通過isa指針找到方法,而類方法直接找到方法)
>優化內存(類方法不需要創建對象)
>類方法一般用於編寫工具方法
3.匿名對象
[Iphone new];//這個是匿名對象
當對象方法只調用一次的時候可以使用匿名對象
匿名對象可以作爲實參傳遞
4.封裝
在開發當中有時候只提供get方法,,該屬性稱之爲只讀屬性
有時候只提供set方法,該屬性就稱之爲只寫屬性
OC有一個約定
給成員變量賦值提供一個叫做set方法的方法
1.一定是對象方法
2.返回值一定是void
3.一定以set開頭,set後面跟上成員變量的名稱去掉下劃線,並且首字母大寫
4.一定有參數,並且參數類型和成員變量類型一致,參數名稱和成員變量名稱去掉下劃線相同
取成員變量的值提供一個叫做get方法的方法
1.一定是對象方法
2.一定有返回值,並且返回值類型和成員變量類型一致
3.方法名稱和成員變量去掉下劃線一致
4.一定沒有參數
封裝的原則:
將不需要對外提供的內容都隱藏起來
把屬性都隱藏,提供公共的方法對其訪問
封裝的目的:
同set方法封裝屬性,可以過濾掉一些不符合邏輯的數據,保證了我們數據的正確性
提高了代碼的健壯性
封裝的好處:
將變化隔離
提高代碼的重用性
提高了代碼的安全性
5.組合模式
組合模式的概念:
組合模式就是一個類中聲明瞭其它類的對象
優點:
全局對象方法中都可以直接訪問,節省了代碼量
缺點:
依賴性比較強
使用場景:
當多個方法都用到了同一個對象,那麼就把它設置爲成員變量
如何判斷組合模式的合理性:
XXX 擁有了 XXX (誰擁有誰的一個關係)