iT邦幫忙

0

iOS APP 開發 OC 第十天,block

  • 分享至 

  • xImage
  •  
tags: OC 30 day

有哪些是數據類型?

int,double,float,char ...
既然是一個數據類型那麼就可以聲明這個數據類型的變量。所以block完全也可以聲明一個block類型的變量。
不同類型的變量中可以儲存不同類型的數據。

Block 是數據類型

那麼block類型的變量中可以儲存什麼樣的數據呢?

  1. block 是一個數據類型,所以我們可以聲明一個block類型的變量。
  2. block 類型的變量中專們儲存一段代碼,這段代碼可以有參數也可以有反回值。

block 變量的聲明

  1. 雖然block變量中是用來儲存一段代碼,但是一個block變量中並不是任意一段代碼都可以存進去的是有限定的。也就是說,再聲明block變量儲存的代碼段是否有參數,是否有反回值。一但指定以後,這個block變量中就只能儲存這樣的代碼了。

聲明一個block變量,反回值是void,參數是一個int類型的。
這個時候,這個block變量中就只能儲存無反回值並且有一個int參數的代碼>段。

聲明block變量的語法格式:

反回值類型 (^block變量的名稱)(參數列表);
void (^myBlock1)(); 
//表示聲明了一個block類型的變量叫做myBlock1
// 這個變量只能儲存沒有反回值沒有參數的代碼段。

注意:

聲明block變量的時候要指定這個block變量可以儲存的代碼段的反回值和參數描述,一但指定,這個block變量就只能儲存這樣的代碼段了,其他格式的代碼段無法儲存。

初始化block變量

  1. 原理: 寫一段符合block要求的代碼段,儲存到變量就可以了。
  2. 代碼段的書寫格式:
^反回值類型(參數列表){
代碼段;
};
  1. 寫一段無參數無反回值的代碼段:
^void(){
NSLog(@"喵嗚");
};

這個時候,我們就可以將這段代碼使用賦值符號儲存到無反回值無參數要求的block變量中,當然也可以再聲明block變量同時使用符合要求的代碼段初始化。

void (^myBlock1)(); 
myBlock1 = ^void(){
NSLog(@"喵嗚");
};

有返回值的代碼段

^int(){
    int num1 = 10 + 20;
    return num1;
};

我們就可以將這段代碼復職給符合要求的block變量。

int (^myblock2)() = ^int(){
    int num1 = 10 + 20;
    return num1;
};

有參數有返回值的代碼段

^int(^myblock3)(int num1,int num2){
int num3 = num1 + num2;
return num3;
};

所以我們可以將這段代碼賦值給符合要求的block變量。

^int(^myblock3)(int num1,int num2) = ^int(int num1,int num2){
int num3 = num1 + num2;
return num3;
};

注意

賦值給block變量的代碼必須要符合block變量的要求。否則會報錯。

如何執行儲存在block變量中的代碼段?

語法格式:

block變量名();

有參數就傳參數,有反回值就接。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言