例子1:
int val = 10;
void (^blk)(void) = ^();
val = 2
; printf(
"out block %d[%p]\n
", val, &val);
//out block 2[0x7fff5fbff82c]
blk();
例子2:
__block int val = 10;
void (^blk)(void) = ^();
val = 2
; printf(
"out block %d[%p]\n
", val, &val);
//out block 2[0x7fff5fbff82c]
blk();
結論:1. block中,如果使用了外部引數,那麼這些引數都會被拷貝乙份到block中,無論外部的這個變數如何變化,block中的引數不會變化
2. 如果需要在block中使用外部引數,那麼就請使用__block關鍵字
3. block可能global,heap,stack中儲存,一般如果在類中定義乙個block,那麼它是在global中,使用copy或者strong都可以。但是為了安全起見,建議block都使用copy放置block被分配在stack中。
IOS中Block的使用
block的宣告 1,void myblock 2,int myblock float,int 3,nsstring myblock int,nsstring 也可以使用typedef為block定義別名。三種block的特性 block是乙個object物件,所以我們需要對它進行記憶體管理。blo...
iOS開發中block的使用
block簡介 block的實際行為和function很像,最大的差別是在可以訪問同乙個scope的變數值。block實體形式如下 傳入引數列 block實體開頭是 接著是由小括號所包起來的引數列 比如 int a,int b,int c 行為主體由大括號包起來,專有名字叫做block litera...
iOS中block的定義和使用
1.block可以用來儲存一段 或者用來封裝一段 段,塊。2.block的標誌是 3.block跟函式很像 可以儲存 可以有返回 值 也可以有行參 呼叫方式一樣 4.定義乙個block pragma mark 不帶引數的block void outputblock outputblock 5.帶行參...