//關於block
的定義 這裡我用typedef 宣告乙個返回值為整型 有乙個引數的block
// typedef void (^block) (nsinteger x);
//下面定義並且實現乙個block
block block = ^(nsinteger x);
//這裡只是給block賦值了 但是沒有呼叫block 但是下面這種形式是給block賦值並且呼叫
block block1 = ^(nsinteger x);
nslog(@"%d",block1(5));
不能直接對區域性基本變數進行操作但是可以用__block宣告 這樣就可以使用 例如下面的第乙個做法是錯的
nsinteger m = 5;
block block2 = ^(nsinteger x);
//下面這種做法是正確的
__block nsinteger m = 5;
block block3 = ^(nsinteger x);
可以對指標和全域性變數進行操作例如用static修飾的變數和 一些陣列,字典等容器
static nsinteger n = 5;
block block4 = ^(nsinteger x);
nsinteger a= 8 ;
nsinteger *p = &a;
block block5 = ^(nsinteger x);
nslog(@"%ld",(long)block5(5));//這裡列印的結果是14
nsmutablearray *array1 = [nsmutablearray arraywithobjects:@"zhangsan",@"lisi",@"wangwu", nil];
//這裡我新定義乙個block
void (^block6)() = ^;//注意這裡如果返回值為空可以省略 引數為空也可以省略
block6();
nslog(@"%@",array1);
//注意這裡只是block的一些基本用法 block高階可以用來傳值 可以用來幫助切換頁面 block 和 delegate的思想和相似 delegate是指定了誰是** 誰就要接受協議 實現delegate中必須要實現的方法 用通俗的話來說就是delegate是我指定你作為我的** 在某個時間點你要為我做一些事 block是我會再某個時間點做什麼事在你這裡實現以下,我將會在我的下篇部落格中展示用block 和delegate的例子
Block的使用 初探Block
看了兩天的block。網上是有非常多解說與教程,也有講得非常好的。這裡就主要解說下我的理解與收穫。歡迎拍磚。所謂block。我覺得應該是乙個閉包函式。而閉包,就是說block以及內部全部的變數生命週期都在其呼叫函式的生命週期內。它一被呼叫完畢,則會被立刻釋放。這裡不講執行機制,僅僅簡要地講基本的用法...
Block語法的使用
block的作用 同 協議 通知一樣用於物件和物件之間的通訊。block的定義 是乙個匿名的函式 塊,此 塊可以作為引數傳遞給其他物件。block的應用場景 物件與物件之間的通訊。block的語法 block的宣告 第一種 int myblock int 第二種 typedef int mybloc...
Block的簡單使用
定義block時,可以對block的輸入引數以及返回值的型別進行定義。可以有輸入引數,也可以沒有輸入引數 可以設定乙個輸入引數,也可以設定多個引數 可以有返回值,也可以沒有返回值。這種形式的block,無需任何輸入引數,並且無返回值,一般都是在該block中完成一些動作,例如在完成一段動畫後,執行一...