oc block 傳值和協議

2021-06-28 21:19:36 字數 1920 閱讀 8103

一、bolck

(一)簡介

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協議名稱

>  

屬性名;

iOS如何實現傳值 協議傳值

b a 傳值 步驟 1.寫協議 2.新增 屬性 3.呼叫 人 方法 4.給 人新增協議 5.設定 人 6.實現協議方法 例子 secondviewcontroller.h secondviewcontroller.h 協議傳值 created by 薩斯輩的呼喚 on 14 6 13.import ...

委託和協議

委託就是秘書委託是objc中使用非常頻繁的一種設計模式,它的實現與協議的使用是分不開的,讓我們看乙個綜合示例 小公司老闆日常的工作是管理公司 教導新員工 發工資與接 其中管理公司 教導新員工是老闆要親為的。而發工資與接 老闆希望招聘乙個秘書來幫忙,於是對秘書的要求就是要略懂出納發工資,要能幫助領導接...

介面和協議

介面和協議 1.cs 客戶端 伺服器 bs 瀏覽器 伺服器 bs與cs優缺點對比 cs響應速度快,安全性強,使用者體驗好,一般應用於區域網中,但是開發維護成本高 bs可以實現跨平台,客戶端零維護,但是個性化能力低,響應速度較慢。所以有些單位日常辦公應用bs,在實際生產中使用cs結構。2.http1....