iOS開發中block的使用

2021-07-09 09:39:51 字數 1367 閱讀 9935

block簡介:

block的實際行為和function很像,最大的差別是在可以訪問同乙個scope的變數值。block實體形式如下:

^(傳入引數列);

block實體開頭是「^」,接著是由小括號所包起來的引數列(比如 int a, int b, int c),行為主體由大括號包起來,專有名字叫做block literal。行為主體可以用return回傳值,型別會被compiler自動辨別。如果沒有引數列要寫成: ^(void)。

使用案例:(注意,所有block都用copy屬性)

#import

typedef

void

(^selectcolorblock)(

uicolor

*);typedef

void

(^selectlinewidthblock)(

cgfloat

);typedef

void

(^selectelse)();

#import

"selectebutton.h"

@inte***ce

toolview :

uiview

@property

(nonatomic

,copy

)selectcolorblock

selectcolorblock;

@property

(nonatomic

,copy

)selectlinewidthblock

selectlinewidthblock;

@property

(nonatomic

,copy

)selectelse

undoblock;

@end

@implementation

toolview

- (void

)topcoloraction:(

uicontrol

*)control }

@end

@implementation

viewcontroller

- (void

)viewdidload ;

toolview.

selectlinewidthblock

= ^(

cgfloat

linewidth);

toolview.

undoblock

= ^();

}@end

block使用中應該注意的問題,迴圈引用

下面是典型的解決迴圈引用的例子,如果是變數在block中改變,應該加上字首 __block

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 block 我們稱 塊,他類似乙個方法。而每乙個方法都是在被呼叫的時候從硬碟到記憶體,然後去執行,執行完就消失,所以,方法的記憶體不需要我們管理,也就是說,方法是在記憶體的棧區。所以,block...

iOS開發 Block詳解

block是乙個非常有特色的語法,它可以把乙個 塊作為乙個變數來儲存,也可以通過函式傳遞變數,然後讓其他的物件來執行這一 塊。可以儲存傳遞並在其他地方執行的 塊,這是我對block的理解,也是我覺得block最吸引我的地方。直接定義 返回block指標 返回型別 可省略 引數型別 引數 沒有引數可省...