標籤:des blog io os 使用 strong sp div on
本文的順序是層層深入的,要想簡單的瞭解,只看
X.1 初探Block就好了
本章學習目標:
1. 瞭解何謂block。
2. 瞭解block的使用方法。
Block 是iOS在4.0之後新增的程式文法,嚴格來說block的概念並不算是基礎程式設計的範圍,對初學者來說也不是很容易瞭解,但是在iOS SDK 4.0之後,block幾乎出現在所有新版的API之中,換句話說,如果不瞭解block這個概念就無法使用SDK 4.0版本以後的新功能,因此雖然block本身的文法有點難度,但為了使用iOS的新功能我們還是得硬著頭皮去瞭解這個新的程式概念。
在這一章的目標以瞭解如何使用block為主而不深入探討block底層的運作方式,至於有些初學者較少遇到的辭彙如「詞法範圍(lexical scope)」等,本章將不再多做解釋,待有興趣的讀者去請教Google大神吧。
X.1 初探Block
在這一小節我們先用一些簡單範例來匯入block的概念。
X.1.1 宣告和使用Block
我們使用「^」運運算元來宣告一個block變數,而且在block的定義最後面要加上「;」來表示一個完整的述句(也就是將整個block定義視為前面章節所介紹的簡單述句,因為整個定義必須是一個完整的句子,所以必須在最後面加上分號),下面是一個block的範例:
1: int multiplier = 7 ;
2: int (^myBlock)( int ) = ^( int num)
3: {
4: return num * multiplier;
5: };
我們使用來解釋這個範例(請將文字框的字翻譯如下):
我們宣告一個「myBlock」變數,用「^」符號來表示這是一個block。
這是block的完整定義,這個定義將會指定給「myBlock」變數。
表示「myBlock」是一個回傳值為整數(int)的block。
它有一個參數,型態也是整數。
這個參數的名字叫做「num」。
這是block的內容。
值得注意的地方是block可以使用和本身定義範圍相同的變數,可以想像在上面的例子中 multiplier 和 myBlock 都是某一個函數內定義的兩個變數也就是這個變數都在某個函數兩個大括弧「{」和「 }」中間的區塊,因為它們的有效範圍是相同的,因此在block中就可以直接使用 multiplier 這個變數,此外當把block定義成一個變數的時,我們可以直接像使用一般函數般的方式使用它:
iOS block的用法