日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OC语言Block和协议

發布時間:2024/4/15 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OC语言Block和协议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?

OC語言Block和協議

分類:?OC基礎 OC Block OC協議

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

轉載于:https://www.cnblogs.com/iOS-mt/p/4275971.html

總結

以上是生活随笔為你收集整理的OC语言Block和协议的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。