非正式協議是
類的範疇類(範疇類是語言特徵。通過它,您無需子類化就向某個類增加方法),這意味著幾乎所有的物件都是非正式協議的採納者。非正式協議中的方法不必全部實現。在呼叫某個方法之前,呼叫物件會先檢查目標物件是否實現此方法。在可選協議方法被引入
objective-c 2.0
之前,非正式協議實質上是
foundation
和類用於實現委託的方式。
正式協議宣告乙個方法列表,協議採納者需要實現表中所有方法。正式協議有特殊的宣告、採納以及型別檢查語法。您可以使用
@required
和@optional
關鍵字指定方法必須實現或可選實現。子類將會繼承其祖先類所採用的正式協議。乙個正式協議也可以採納其他的協議。正式協議是對
objective-c
語言的擴充套件。
Object C非正式協議與正式協議的區別
這兩個概念困擾我很久了,一直都很像搞清楚到非正式協議和正式協議有什麼區別和聯絡,下面結合網上的資料和自己的看法談談這個問題。一 非正式協議 顯然這個名詞是相對於正式協議而言的。在解釋非正式協議之前,先引用兩段話 1 在 cocoa設計模式 第六章類別的6.3.2把類別用於非正式協議一節中,這樣寫到 ...
類別,非正式協議,正式協議
類別,非正式協議,正式協議 1類別 1.1 不能新增新的例項變數 1.2 如果一定要在類別中使用例項標量,可以使用全域性變數 關聯 額外變數 注 cocoa中沒有任何真正的私有方法,只要知道物件支援的某個方法名稱,即使.h中沒有宣告,也可以呼叫該方法。個人理解是oc的動態機制 2非正式協議 即建立乙...
Objective C中的類別和非正式協議
在編寫物件導向的程式時,你經常希望向現有的類新增一些新的行為 你總是能夠為物件提供使用這些新方法的新手段。當希望為現有的類增加新行為時,我們通常會建立子類,但是有時候子類並不方便。例如,你可能會希望為nsstring類增加一些新行為,但是你知道nsstring實際上只是乙個類簇的前台表示,因而無法為...