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指標 返回型別 可省略 引數型別 引數 沒有引數可省...