Block的定義,以及使用

2022-09-20 04:00:13 字數 1658 閱讀 5570

block的演變過程

1.定義乙個函式,無引數,無返回型別

void

test()

2.定義乙個無引數,無返回型別的block時使用 用尖號"^"表示它是乙個block,

如void (^myblock)(),myblock是block的名字,後面()代表它沒有引數,不可省略.

將上面test函式的函式體前加乙個^號就是乙個完整的**塊,不要忘記函式體後要加";"號

^;

//

函式呼叫

test();

//定義乙個block

void (^myblock)() = ^;

//呼叫block

myblock();

定義乙個有引數,有返回值的block

1.還是按照乙個有引數有返回型別的函式推理,即:

int sum(int a ,int

b)

2.定義:

1>確定block的返回值型別

2>定義乙個有意義的名字

3>有幾個引數,引數的型別是什麼

4>在**塊中編寫要執行怎樣的操作,

5>呼叫這個block

//

有參有反的block

int (^sumblock1)(int a ,int b) = ^(int a ,int

b);//

傳遞引數,並定義變數接收結果

int sum = sumblock1(1,2

);nslog(

@"sum = %i

",sum);

block在某個類中作為引數傳遞

1.block既然是一種資料型別,不可以直接傳遞.首先使用typedef定義,它的block名calculateblock,並將它作為引數

#import

typedef

int (^calculateblock)(int a,int

b);@inte***ce

useblock : nsobject

-(int)calculatenumber1:(int)num1 andnum2:(int

)num2 andcalculate:(calculateblock)calculate;

@end

2.在.m檔案中實現

@implementation

useblock

- (int)calculatenumber1:(int)num1 andnum2:(int

)num2 andcalculate:(calculateblock)calculate

@end

3.如何使用

//

定義兩數之和的block

int (^sumblock)(int a ,int b) = ^(int a ,int

b);useblock *u =[[useblock alloc]init];

//將定義好的block作為引數傳遞

int result = [u calculatenumber1:10 andnum2:20

andcalculate:sumblock];

nslog(

@"%i

",result);

iOS中block的定義和使用

1.block可以用來儲存一段 或者用來封裝一段 段,塊。2.block的標誌是 3.block跟函式很像 可以儲存 可以有返回 值 也可以有行參 呼叫方式一樣 4.定義乙個block pragma mark 不帶引數的block void outputblock outputblock 5.帶行參...

Block的使用 初探Block

看了兩天的block。網上是有非常多解說與教程,也有講得非常好的。這裡就主要解說下我的理解與收穫。歡迎拍磚。所謂block。我覺得應該是乙個閉包函式。而閉包,就是說block以及內部全部的變數生命週期都在其呼叫函式的生命週期內。它一被呼叫完畢,則會被立刻釋放。這裡不講執行機制,僅僅簡要地講基本的用法...

Block語法的使用

block的作用 同 協議 通知一樣用於物件和物件之間的通訊。block的定義 是乙個匿名的函式 塊,此 塊可以作為引數傳遞給其他物件。block的應用場景 物件與物件之間的通訊。block的語法 block的宣告 第一種 int myblock int 第二種 typedef int mybloc...