oc語言
block
和協議一、bolck
(一)簡介
block是什麼?蘋果推薦的型別,效率高,在執行中儲存**。用來封裝和儲存**,有點像函式,
block
可以在任何時候執行。
bolck和函式的相似性:(
1)可以儲存**(
2)有返回值(
3)有形參(
4)呼叫方式一樣。
識別符號 ^
(二)基本使用
(1)定義block變數
int (^sumblock)(int,int);//有引數,返回值型別為
int
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);
myblock b2=^(int n1,int n2);
二、protocol(協議)
(一)簡介
1.protocol:就乙個用途,用來宣告一大堆的方法(不能宣告成員變數),不能寫實現。
2.只要某個類遵守了這個協議,就擁有了這個協議中的所有方法宣告。
3.只要父類遵守了某個協議,那麼子類也遵守。
4.protocol宣告的方法可以讓任何類去實現,
protocol
就是協議。
5.oc不能繼承多個類(單繼承)但是能夠遵守多個協議。繼承
(:),遵守協議(
) 6.基協議:是基協議,是最根本最基本的協議,其中宣告了很多最基本的方法。
7.協議可以遵守協議,乙個協議遵守了另乙個協議,就可以擁有另乙份協議中的方法宣告。
(二)基本使用
建立乙個協議
遵守協議
完成協議中宣告的方法的實現
測試程式
1.協議的定義
@protocol
協議名稱
//方法宣告列表
@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
標頭檔案中,但也可以定義在任何地方。當這個協議只有這個類使用遵守時,一般把協議寫在這個類裡邊,當這個協議需要多個類去實現時,就寫在外邊單獨的檔案中。
OC語言BLOCK和協議
oc語言 block 和協議一 bolck 一 簡介 block是什麼?蘋果推薦的型別,效率高,在執行中儲存 用來封裝和儲存 有點像函式,block 可以在任何時候執行。bolck和函式的相似性 1 可以儲存 2 有返回值 3 有形參 4 呼叫方式一樣。識別符號 二 基本使用 1 定義block變數...
OC語言BLOCK和協議
oc語言 block 和協議一 bolck 一 簡介 block是什麼?蘋果推薦的型別,效率高,在執行中儲存 用來封裝和儲存 有點像函式,block 可以在任何時候執行。bolck和函式的相似性 1 可以儲存 2 有返回值 3 有形參 4 呼叫方式一樣。識別符號 二 基本使用 1 定義block 變...
OC語言BLOCK和協議
oc語言 block 和協議一 bolck 一 簡介 block是什麼?蘋果推薦的型別,效率高,在執行中儲存 用來封裝和儲存 有點像函式,block 可以在任何時候執行。bolck和函式的相似性 1 可以儲存 2 有返回值 3 有形參 4 呼叫方式一樣。識別符號 二 基本使用 1 定義block 變...