一、概念:
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)。