李洪強iOS開發之Block和協議

來源:互聯網
上載者:User

標籤:void   main   標頭檔   標識   protoc   標識符   end   ima   ccf   

李洪強iOS開發之Block和協議

 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){return a-b;};

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

 

二、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標頭檔中,但也可以定義在任何地方。當這個協議只有這個類使用遵守時,一般把協議寫在這個類裡邊,當這個協議需要多個類去實現時,就寫在外邊單獨的檔案中。

 

李洪強iOS開發之Block和協議

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.