標籤:
什麼是協議
是一種文法 像現實中的 勞動協議 等
規範介面 實現對象之間的通訊
只是聲明方法 遵守協議的類 來實現
方法有 必須實現 和不必須實現兩種
常用於 代理 深淺拷貝 歸檔(NScoding) 規範介面
不同的類 想做相同的事情 常用協議規範他們的行為 進而達到規範介面的目的
oc沒有多繼承 所以用協議
比如 以後公司裡 代碼的封裝 不同的類 常用 協議規範
arc
1.ios5之後 出現的 一種 記憶體自動管理機制*(還會自動檢測 資料類型)
不需要 像以前一樣 通過 retain 使引用計數器
+1,或者手動添加release使引用計數器減一
或者 AUtolease
不能顯示調用 deleaoc
retain/copy
使用copy必須遵守NScoping協議
retain 使對象引用計數器+|
assign直接賦值 不會是對象引用計數器加減
autorelease把對象的地址 放到離他最近的 自動釋放池裡 延時釋放
dealloc 對象的引用計數器減為0的時候 自動調用 dealloc
、、、、、、、、、、、、、
self.name =XX是一個set方法 可以KVO監聽(set/kvc)內部考慮記憶體管理
_name只是一個簡單的變數賦值,在ARC下要考慮記憶體 ,因為預設這是一個強引用指標
類別
升級一個類、給原有的類增加方法 2不能增加屬性
3繼承 父類所有的方法和屬性(包括父類用類別增加的方法也能繼承)
strong weak
是ARC的文法,weak 弱引用指標 weak 指向的對象 可以直接賦值,而且 一旦這個對象被銷毀,weak修飾的指標置為nil
strong 是強引用指標,會使引用計數器 自動加+1
weak/asign
1都有直接賦值的意思
2weak 是修飾弱引用指標的,是ARC的文法。asign在ARC和MRC下都能用,ARC下只能修飾一些基礎資料型別 (Elementary Data Type),MRC下也可以是修飾弱引用對象地址。
混編
在工程target設定中
arc -fno-objc-arc
-fobjc-arc
o-c多繼承
用協議代替但 本質是沒有多繼承的,只是可以遵守多個協議,也能有繼承多個類的效果,
實現多個協議方法,進而有多繼承的效果,只是類比,但沒有毛線的關係。
o-c有沒有私人變數,和私人方法,如果沒有 怎麼實現
成員變數預設是protect的 受保護的,也可以修飾成私人的provate,
但是 沒有私人方法
在聲明部分不聲明(或者在類的匿名類別中聲明) 在類的實現部分 實現,實現私人的效果,但是本質是沒有私人方法的,因為可以用選取器進行訪問,這就是o-c的動態機制,根本沒有真正的私人
#include#[email protected]
#import不用添加條件編譯#include必須要條件編譯 防止標頭檔多次被包含導致重複定義
@class前向引用申明,目的是防止,相互包含,告訴編譯器,我後面會聲明,現在這裡定義一下,請允許存取。
只copy 對象引用 ()歸檔時深拷貝
MVC 架構設計模式好幾十了,現在c層過重,降低了編輯效率,所有有一種編輯叫 MVVM
是對象獨立化 代碼複用 增強健壯性 降低軟體成本
觀察者模式
通知,KVO
Object - C基礎篇(-)