OC語言BLOCK和協議

 

OC語言BLOCK和協議函數

1、BOLCK測試

(一)簡介ui

BLOCK是什麼?蘋果推薦的類型,效率高,在運行中保存代碼。用來封裝和保存代碼,有點像函數,BLOCK能夠在任什麼時候候執行。atom

BOLCK和函數的類似性:(1)能夠保存代碼(2)有返回值(3)有形參(4)調用方式同樣。指針

標識符 ^blog

(二)基本使用繼承

(1)定義BLOCK變量io

Int (^SumBlock)(int,int);//有參數,返回值類型爲intclass

Void (^MyBlock)();//無參數,返回值類型爲空效率

(2)利用block封裝代碼

  

(3)Block訪問外部變量

1)Block內部能夠訪問外部變量;

2)默認狀況下,Block內部不能修改外部的局部變量

3)給局部變量加上__block關鍵字,則這個局部變量能夠在block內部進行修改。

 

(4)利用typedef定義block類型(和指向函數的指針很像)

Typedef int(^MyBlock)(int ,int);

之後就能夠利用這種類型來定義block變量了。

MyBlock a,b;  

a=^(int a,int b){return a-b;};

MyBlock b2=^(int n1,int n2){return n1*n2;};

 

2、Protocol(協議)

(一)簡介

1.Protocol:就一個用途,用來聲明一大堆的方法(不能聲明成員變量),不能寫實現。

2.只要某個類遵照了這個協議,就擁有了這個協議中的全部方法聲明。

3.只要父類遵照了某個協議,那麼子類也遵照。

4.Protocol聲明的方法可讓任何類去實現,protocol就是協議。

5.OC不能繼承多個類(單繼承)可是可以遵照多個協議。繼承(:),遵照協議(< >)

6.基協議:<NSObject>是基協議,是最根本最基本的協議,其中聲明瞭不少最基本的方法。

7.協議能夠遵照協議,一個協議遵照了另外一個協議,就能夠擁有另外一份協議中的方法聲明。

 

(二)基本使用

建立一個協議

遵照協議

完成協議中聲明的方法的實現

測試程序

1.協議的定義

@protocol 協議名稱 <NSObject>

//方法聲明列表

@end;

2.如何遵照協議

(1)類遵照協議

@protocol 類名:父類名 <協議名稱1,協議名稱2>

@end

(2)協議遵照協議

@protocol 協議名稱 <其餘協議名稱>

@end;

3.協議方法聲明中的關鍵字

(1)required (默認)要求實現,若沒有實現則警告但不報錯

(2)Optional 不要求實現

4.定義變量時遵照協議的限制

類名<協議名稱> *變量名    NSObject<.Myprotocol> *obj;

Id  <協議名稱>  變量名   id  <.Myprotocol> obj1;

 

5.Property中聲明的屬性也能夠作遵照協議的限制

@property (nonatomic ,strong ) 類名<協議名稱> *屬性名;

@property (nonatomic ,strong ) id<協議名稱>  屬性名;

 

6.補充知識:協議自己寫在.h頭文件中,但也能夠定義在任何地方。當這個協議只有這個類使用遵照時,通常把協議寫在這個類裏邊,當這個協議須要多個類去實現時,就寫在外邊單獨的文件中

相關文章
相關標籤/搜索