iOS學(xué)習(xí)筆記非正式協(xié)議、正式協(xié)議

一、概念:

1、非正式協(xié)議(informal protocol):所謂的非正式協(xié)就是類別,即凡是NSObject或子類的類別,都是非正式協(xié)議。
2、正式協(xié)議(protocal):指的是一個(gè)以@protocol方式命名的方法列表,與非正式協(xié)議不同的是,它要求顯示的采用協(xié)議。你可以使用@required或者optional關(guān)鍵字指定方法是否必須實(shí)現(xiàn)。子類繼承父類采用的協(xié)議。正式協(xié)議也可以遵守其他協(xié)議。

正式協(xié)議(protocal):

1、正式協(xié)議的方法類型
正式協(xié)議聲明的方法有兩種類型:

① @required
該類的方法要遵守相應(yīng)協(xié)議的類中是必須實(shí)現(xiàn)的,不然編譯器會(huì)警告(這是在編譯時(shí)做的檢查)
② @optional
該類的方法在遵守相關(guān)協(xié)議的類中是否實(shí)現(xiàn)是可選的。

2、正式協(xié)議存在的意義

正式協(xié)議可以將業(yè)務(wù)的方法定義剝離出來,形成了一個(gè)單獨(dú)的文件。

非正式協(xié)議(informal protocol):

1、類別和匿名類別(類擴(kuò)展)
所謂的類擴(kuò)展,就是為一個(gè)類添加額外的原來沒有的變量、方法或者合成屬性。
2、類別和類擴(kuò)展的區(qū)別:

1、類別中只能增加方法;
2、類擴(kuò)展不僅能增加方法,還可以增加實(shí)例變量(或者合成屬性),只是該實(shí)例變量默認(rèn)是@private類型的(作用范圍只能再自身類,而不是子類或者其他地方);
3、類擴(kuò)展中聲明的方法沒有被實(shí)現(xiàn),編譯器會(huì)報(bào)警,但是類別中的方法沒有被實(shí)現(xiàn)編譯器是不會(huì)有任何警告的。這是類擴(kuò)展在編譯階段唄添加到類中,而類別是在運(yùn)行時(shí)被添加到類中。
4、類擴(kuò)展不能像類別那樣擁有獨(dú)立的實(shí)現(xiàn)部分,也就是說,類擴(kuò)展所聲明的方法必須依托對(duì)應(yīng)類的實(shí)現(xiàn)部分來實(shí)現(xiàn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 30,284評(píng)論 8 265
  • 這兩個(gè)概念困擾我很久了,一直都很像搞清楚到非正式協(xié)議和正式協(xié)議有什么區(qū)別和聯(lián)系,下面結(jié)合網(wǎng)上的資料和自己的看法談?wù)?..
    reallychao閱讀 1,723評(píng)論 1 1
  • 37.cocoa內(nèi)存管理規(guī)則 1)當(dāng)你使用new,alloc或copy方法創(chuàng)建一個(gè)對(duì)象時(shí),該對(duì)象的保留計(jì)數(shù)器值為1...
    如風(fēng)家的秘密閱讀 963評(píng)論 0 4
  • 最全的iOS面試題及答案 iOS面試小貼士 ———————————————回答好下面的足夠了-----------...
    大羅Rnthking閱讀 1,057評(píng)論 0 2
  • 今天6點(diǎn)半起床。一早就到達(dá)美參加市場(chǎng)部的會(huì)議。按照原計(jì)劃討論呢9月份市場(chǎng)活動(dòng)的內(nèi)容和時(shí)間節(jié)點(diǎn),緊接著參加了周四例...
    星鑠閱讀 250評(píng)論 0 0

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