iOS Block

1.Block是C語言層次的語法,有點類似函數指針,具有運行時的特點

Block objects are a C-level syntactic and runtime feature that allow you to compose function expressions that can be passed as arguments, optionally stored, and used by multiple threads.

iOS SDK 4.0開始,Apple引入了block這一特性,block就是一個代碼塊,但是它的神奇之處在于在內聯(inline)執行的時候(這和C++很像)還可以傳遞參數。同時block本身也可以被作為參數在方法和函數間傳遞,這就給予了block無限的可能。

------------------------------------------------------------

2.Block使用

定義Block:

int (^oneFrom)(int);

創建Block:

oneFrom = ^(int anInt) {

return anInt - 1;

};

使用Block

printf("%d\n", oneFrom(10));

說明:

(1)在類中,定義一個Block變量,就像定義一個函數;

(2)Block可以定義在方法內部,也可以定義在方法外部;

(3)只有調用Block時候,才會執行其{}體內的代碼;

------------------------------------------------------------

3.Block使用場景

Block很多的用處是跨越兩個類來使用的,Block塊是在棧中的,除了塊就為空

------------------------------------------------------------

4.__block關鍵字的使用

當在block中腰修改外部的變量時,需要在外部的變量加_Block關鍵字(外部變量是在block申明時被拷貝下來的,所以外部變量改變時block內對齊的拷貝無影響)

另外一種方法是:使用實例變量

------------------------------------------------------------

5.Block作為property屬性實現頁面之間傳值

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 《Objective-C高級編程》這本書就講了三個東西:自動引用計數、block、GCD,偏向于從原理上對這些內容...
    WeiHing閱讀 9,895評論 10 69
  • 前言 Blocks是C語言的擴充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了這...
    小人不才閱讀 3,785評論 0 23
  • Block是iOS開發中一種比較特殊的數據結構,它可以保存一段代碼,在合適的地方再調用,具有語法簡介、回調方便、編...
    飛魚灣閱讀 4,159評論 0 7
  • 目錄 Block概述 Block定義方式 Block保存代碼 Block傳值 Block對外部變量的傳遞 Bloc...
    子斌閱讀 1,422評論 2 7
  • Block是iOS在4.0之后新增的程式語法,嚴格來說block的概念并不算是基礎程式設計的范圍,對初學者來說也不...
    Bager閱讀 925評論 0 0