OC中的protocol-創(chuàng)新互聯(lián)

類似于java中的interface接口類,沒有含有抽象方法,讓實現(xiàn)它的類,必須實現(xiàn)其中的方法

創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站建設、網(wǎng)站設計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元臨清做網(wǎng)站,已為上家服務,為臨清各地企業(yè)和個人服務,聯(lián)系電話:028-86922220

OC中的協(xié)議(protocol):

1 1)Protocol:就一個用途,用來聲明一大堆的方法(不能聲明成員變量),不能寫實現(xiàn)
2 2)只要某個類遵守了這個協(xié)議,就擁有了這個協(xié)議中的所有方法聲明
3 3)只要父類遵守了某個協(xié)議,那么子類也遵守
4 4)Protocol聲明的方法可以讓任何類去實現(xiàn),protocol就是協(xié)議
5 5)OC不能繼承多個類(單繼承)但是能夠遵守多個協(xié)議,繼承(:),遵守協(xié)議(<>)
6 6)基協(xié)議:<NSObject>基協(xié)議,是最根本最基本的協(xié)議,其中聲明了很多最基本的方法
7 7)協(xié)議可以遵守協(xié)議,一個協(xié)議遵守了另一個協(xié)議,就可以擁有另一個協(xié)議中的方法聲明

protocol的使用流程

協(xié)議的使用流程:
    定義協(xié)議--->在類中采用指定的協(xié)議--->實現(xiàn)協(xié)議中的方法(注意方法有必須實現(xiàn)和選擇實現(xiàn)兩種)

    定義協(xié)議:
@protocol 協(xié)議名稱<NSObject>
  //方法聲明列表 @end;
            
            注意:協(xié)議默認的要采納NSObject的協(xié)議

    采納協(xié)議:
1)類遵守協(xié)議
                某個類遵守某個協(xié)議
@interface 類名 : 父類 <協(xié)議名稱>
  @end

                某個協(xié)議遵守某個或者某些協(xié)議,一個協(xié)議可以遵守其他多個協(xié)議,多個協(xié)議之間用逗號  , 隔開.
@protocol 協(xié)議名稱 <其他協(xié)議名稱1,其他協(xié)議名稱2>
  @end 2)  協(xié)議遵守協(xié)議
@protocol 協(xié)議名稱<其他協(xié)議名稱>
  @end;

創(chuàng)建協(xié)議

protocol中的@required 和 @optiona 的使用

 1 @required和 @optiona是協(xié)議方法聲明中的兩個關鍵字
 2 它們主要用于控制方法是否要實現(xiàn)(默認是@required),在大多數(shù)情況下,用途在于程序員之間的交流
 3 @required:這個方法必須要實現(xiàn)(若不實現(xiàn),編譯器會發(fā)生警告)
 4 @optional:這個方法可以選擇實現(xiàn)(不實現(xiàn),編譯器不會發(fā)生警告)
 5 其實沒什么價值,因為無論哪個修飾,無論實不實現(xiàn),IOS是弱語法都不會對運行產生影響
 6     
 7         例: 
 8  @protocol RunProtocol<NSObject>
 9 
10             @required
11                 -(void)run;
12             @optional
13                 -(void)eat;
14  @end

protocol類型限制

 1 1.使用id存儲對象時,對象的類型限制
 2 
 3         格式; id<協(xié)議名稱> 變量名
 4 
 5     
 6         例:      @property (nonatomic,strong) id <MyProtocol> person;
 7 //標示傳入的對象 必須實現(xiàn)了指定的協(xié)議 8 
 9 2.對象賦值時類型限制
10         使用類也同樣如此
11         格式: 類名<協(xié)議名稱> *變量名
12         NSObject <Myprotocol> *obj;
13 
14 3.對象關聯(lián)關系下,對象的類型限制
15

protocol代理設計模式

1 代理模式概念:
2     傳入的對象,代替當前類完成了某個功能,成為代理模式
3 
4 采用協(xié)議實現(xiàn)代理模式的主要思路為:
5   1)定義一個協(xié)議,里面聲明代理類需要實現(xiàn)的方法列表,比如這里一個代理類需要實現(xiàn)meetingNotify與businessTrip方法
6 2)創(chuàng)建一個代理類(比如PersonAssistant,BossAssistant),遵守上面的代理協(xié)議
7 3)在需要代理的類中(Person),定義一個對象類型為id 且遵守代理協(xié)議的成員變量
8 4)在Person類中調用成員變量_delegate(代理)的方法,調用代理類的方法
9 5)main.m或其他使用Person類的文件中,為Person類的成員變量(代理類)賦值

protocol代理模式應用場合

1 1)監(jiān)聽器的場合
2 2)通知的場合
3 3)有寫事情,不想自己處理,想交給別人處理

 protocol引用問題

 1 @class 代表這是一個類,具體引用在.m文件中 #import 進行導入
 2 
 3 同樣 protocol 也可以這樣
 4 在.h文件中
 5 @protocol workProtocol;//告訴編譯器這是一個協(xié)議 6 @interface Person :NSObject <workProtocol>
 7  //這里會報一個Cannot find protocol的警告,可以不用理會 8 
 9 @end    
10 
11 要實現(xiàn)的時候在.m文件中
12 #import "workProtocol.h"13 
14 引入2:
15     也可以在類的.h文件中直接引入帶實現(xiàn)
16   @protocol runProtocol <NSObject>
17         -(void) run;
18   @end19

網(wǎng)站名稱:OC中的protocol-創(chuàng)新互聯(lián)
轉載源于:http://muchs.cn/article12/cdsigc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計、域名注冊網(wǎng)頁設計公司、面包屑導航品牌網(wǎng)站建設、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網(wǎng)站制作