8-protocol

People Lack Willpower,Rather Than Strength!

1.protocol

  • 概念:

    • 在寫java的時候都會有接口interface這個概念,接口就是一堆方法的聲明沒有實現(xiàn),而在OC里面Interface是一個類的頭文件的聲明,并不是真正意義上的接口的意思,在OC中接口是由一個叫做協(xié)議的protocol來實現(xiàn)的
    • protocol它可以聲明一些必須實現(xiàn)的方法和選擇實現(xiàn) 的方法。這個和java是完全不同的
  • 注意:

    • 一個類可以遵守1個或多個協(xié)議
    • 任何類只要遵守了Protocol,就相當于擁有了Protocol的所有方法聲明.
    • 就一個用途,用來聲明一大堆的方法(不能聲明成員變量),不能寫實現(xiàn).
    • 只要父類遵守了某個協(xié)議,那么子類也遵守.
    • OC不能繼承多個類(單繼承)但是能夠遵守多個協(xié)議。繼承(:),遵守協(xié)議(< >)
    • 協(xié)議可以遵守協(xié)議,一個協(xié)議遵守了另一個協(xié)議,就可以擁有另一份協(xié)議中的方法聲明
  • Protocol和inheritance區(qū)別

    • 繼承之后默認就有實現(xiàn), 而protocol只有聲明沒有實現(xiàn)
    • 相同類型的類可以使用繼承, 但是不同類型的類只能使用protocol
    • protocol可以用于存儲方法的聲明, 可以將多個類中共同的方法抽取出來, 以后讓這些類遵守協(xié)議即可
  • 基協(xié)議

    • NSObject協(xié)議是基協(xié)議,最根本最基本的協(xié)議,NSObject類也要遵守他
    • NSObject協(xié)議中聲明很多最基本的方法
      • description
      • retain
      • release
  • protocol中的方法修飾符:用于程序員之間的交流,不是強制性要求

    • @required:這個方法必須要實現(xiàn)(若不實現(xiàn),編譯器會發(fā)出警告)
    • @optional:這個方法不一定要實現(xiàn)

2.protocol用途

  • 1.類型限制
    • 如何在代碼中要求對象必須具備這些行為?
      • 數(shù)據(jù)類型<協(xié)議名稱> 變量名
      // 如果沒有遵守協(xié)議則會報警告
      id<WifeCondition> wife = [[Person alloc] init];
      
  • 2.代理模式
    • 應用場景:
    - 當對象A發(fā)生了一些行為,想告知對象B(讓對象B成為對象A的代理對象)
    - 對象B想監(jiān)聽對象A的一些行為(讓對象B成為對象A的代理對象)
    - 當對象A無法處理某些行為的時候,想讓對象B幫忙處理(讓對象B成為對象A的代理對象)
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內(nèi)部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,701評論 18 399
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,622評論 30 472
  • 蘋果官方文檔翻譯 《Objective-C語言編程》(Programming with Objective-C) ...
    fever105閱讀 26,324評論 19 129
  • 一、想法思路 首先scrollview的contentSize為3個屏幕的寬度,3個UIImageView一次排列...
    EKven閱讀 342評論 0 0
  • 突然不能釋懷 關于過去種種 時間是一劑良藥 將心里的好壞都抹去 只留下面目模糊的疤痕 時間的增長的確能讓...
    玄_鐵閱讀 216評論 0 0

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