09-protocol

簡單使用

1. 基本用途
  • 可以用來聲明一大堆方法(不能聲明成員變量)
  • 只要某個(gè)類遵守了這個(gè)協(xié)議,就相當(dāng)于擁有這個(gè)協(xié)議中的所有方法聲明
  • 只要父類遵守了某個(gè)協(xié)議,就相當(dāng)于子類也遵守了
2. 格式
  • 協(xié)議的編寫
@protocol 協(xié)議名稱
// 方法聲明列表
@end
  • 某個(gè)類遵守協(xié)議
@interface 類名 : 父類 <協(xié)議名稱>
@end
3. 關(guān)鍵字

協(xié)議中有2個(gè)關(guān)鍵字可以控制方法是否要實(shí)現(xiàn)(默認(rèn)是@required),在大多數(shù)情況下,用途在于程序員之間的交流

  • @required:這個(gè)方法必須要實(shí)現(xiàn)(若不實(shí)現(xiàn),編譯器會(huì)發(fā)出警告)
  • @optional:這個(gè)方法不一定要實(shí)現(xiàn)
4. 協(xié)議遵守協(xié)議
  • 一個(gè)協(xié)議可以遵守其他多個(gè)協(xié)議,多個(gè)協(xié)議之間用逗號(hào) , 隔開
  • 一個(gè)協(xié)議遵守了其他協(xié)議,就相當(dāng)于擁有了其他協(xié)議中的方法聲明
@protocol 協(xié)議名稱 <協(xié)議1, 協(xié)議2>
@end
5. 基協(xié)議
  • NSObject是一個(gè)基類,最根本最基本的類,任何其他類最終都要繼承它
  • 其實(shí)還有一個(gè)協(xié)議,名字也叫NSObject,它是一個(gè)基協(xié)議,最根本最基本的協(xié)議
  • NSObject協(xié)議中聲明很多最基本的方法,比如description、retain、release等
  • 建議每個(gè)新的協(xié)議都要遵守NSObject協(xié)議
6. 定義變量時(shí)指定協(xié)議

// NSObject類型的對(duì)象,并且要遵守NSCopying協(xié)議
NSObject<NSCopying> *obj;
// 任何OC對(duì)象,并且要遵守NSCoding協(xié)議
id<NSCoding> obj2;

代理設(shè)計(jì)模式

1. 設(shè)計(jì)原理
  • 有些麻煩的事情不想自己親自做,就可以找個(gè)人幫忙做,即交給代理對(duì)象去做
2. 設(shè)計(jì)原則
  • 首先得擁有某個(gè)代理對(duì)象屬性
  • 其次要很清楚代理有哪些方法
  • 最后要保證能解耦
3. 實(shí)現(xiàn)方案
  • 定義一個(gè)protocol,在其中聲明一些和代理溝通的方法
  • 擁有一個(gè)代理屬性id<protocol> delegate
  • 讓代理遵守protocol
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 蘋果官方文檔翻譯 《Objective-C語言編程》(Programming with Objective-C) ...
    fever105閱讀 26,324評(píng)論 19 129
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,067評(píng)論 0 9
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,624評(píng)論 30 472
  • 1.屬性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作...
    曾令偉閱讀 1,130評(píng)論 0 10
  • 父類實(shí)現(xiàn)深拷貝時(shí),子類如何實(shí)現(xiàn)深度拷貝。父類沒有實(shí)現(xiàn)深拷貝時(shí),子類如何實(shí)現(xiàn)深度拷貝。? 深拷貝同淺拷貝的區(qū)別:淺拷...
    JonesCxy閱讀 1,203評(píng)論 1 7

友情鏈接更多精彩內(nèi)容