OC 30 day
int,double,float,char ...
既然是一個數據類型那麼就可以聲明這個數據類型的變量。所以block完全也可以聲明一個block類型的變量。
不同類型的變量中可以儲存不同類型的數據。
那麼block類型的變量中可以儲存什麼樣的數據呢?
聲明一個block變量,反回值是void,參數是一個int類型的。
這個時候,這個block變量中就只能儲存無反回值並且有一個int參數的代碼>段。
反回值類型 (^block變量的名稱)(參數列表);
void (^myBlock1)();
//表示聲明了一個block類型的變量叫做myBlock1
// 這個變量只能儲存沒有反回值沒有參數的代碼段。
聲明block變量的時候要指定這個block變量可以儲存的代碼段的反回值和參數描述,一但指定,這個block變量就只能儲存這樣的代碼段了,其他格式的代碼段無法儲存。
^反回值類型(參數列表){
代碼段;
};
^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變量名();
有參數就傳參數,有反回值就接。