Block 是 iOS 4.0 以後才有的語法,而且是 XCode 特有的 C 語法,其不存在於其他 C 的標準中。嚴格來說它就是 C function 的另一種表現方式。因為在 iOS 中,大量的應用了Target-Action 機制(見Hello Target-Action),所以我們經常需要寫只需要一次的 funtion,且程式碼不長時, Block 的功能就出來了,Block還有很多不同的使用方式分別說明如下


第一個概念就是把它作單純的 function 使用,就像是宣告一個變數一樣宣告一個Block, Block 是 function 或 method 中寫另一個 function,限用於 function 或 methond 中。經過特別的宣告,Block 可以使用相同的變數。

其語法如下:

block 語法  

如果仔細和 C function 比較的話,前面的部份就相當於宣告,而後半部就是實作。因為 Block 是寫在內部使用的,所以不需也不能別行宣告,其他的部份和 fuction 是一樣的,但實際上 Block 的宣告就可以是一個變數的宣告,所以也可以分成兩部份,如:

void (^myBlock)(void)=NULL; //宣告

myBlock=^(void){

     //code 實作
    };    

 

下面是一個典型的實際範例:

 

__block int number=0;

void(^print_msg)(void)=^(void){
NSLog(@"This is Block Output, number=%i",number);
};

number=15;
print_msg();

 

上面的程式碼中,紅色的部份即 Block 的基本語法,而宣告 number 這個變數時,如果要在 block 內使用,就要在宣告前面再加上 【 __block 】才行。

上面的例子是把 block 當 function 用,簡化不必要小 function 數量。但比較多的時候,我們是把它用在 method 的參數使用,用它執行傳值任務。


=====未完待續===== 



, , , , , , , , ,
創作者介紹

X Code Objective-C Swift 學習記錄 for iOS & macOS (OS X)

shenfive 發表在 痞客邦 PIXNET 留言(0) 人氣()