block的作用:
同 **-協議、通知一樣用於物件和物件之間的通訊。
block的定義:
是乙個匿名的函式**塊,此**塊可以作為引數傳遞給其他物件。
block的應用場景:
物件與物件之間的通訊。
block的語法:
block的宣告:
第一種:
int (^ myblock)(int);
第二種:
typedef
int(^myblock) (
int);
block的建立:
myblock = ^(
inta);
block的呼叫:
intret = myblock(
20);
block作為引數:
myblock
myblock = ^(
inta);[
self
testblock:myblock];
-(void
) testblock:(
myblock
) myblock
block引用區域性變數:將區域性變數看成是常量:
__block
intnumber =10;
myblock
myblock2 = ^(
inta);
block的記憶體管理:
在block裡面引用乙個區域性的objective-c物件的時候,該物件會被retain
如果區域性變數使用_block修飾,則不會被retain。
//引用計數為1
nsobject
*obj = [[
nsobject
alloc
]init
];myblock
*myblcok = ^(
inta)
;//引用計數1,block引用該變數時不會將它retain
__block nsobject *obj = [[nsobject alloc] init];
在block裡面引用乙個例項變數時,該例項物件會被retain
nslog(@"
計數:%d"
,self
.retaincount);[
self
objectmethod:^];
block本身可以就像物件一樣copy和release。
block建立後記憶體是分配在棧上,呼叫copy方法,會將block從棧移到堆上。
當block宣告為全域性變數時,我們應該呼叫block的copy方法。
兩種copy方式:
[_block copy];
block_copy(_block);
兩種release方式:
[_block release];
block_release(_block);
iphonesdk中**用到的block? (uiview動畫)
+ (void
)animatewithduration:(
nstimeinterval
)duration animations:(
void
(^)(
void
))animations ;
Block 語法練習
函式是具有特定功能的 段 乙個嚴格的函式,包括函式宣告,函式定義,函式呼叫 block塊兒語法,是在函式內部,定義乙個block,block塊執行效率比較高 函式指標指向函式首位址,這樣指標就可以呼叫函式 函式指標型別的重新命名 typedef 函式返回值型別 新函式名 block塊兒語法 返回值型...
Block的使用 初探Block
看了兩天的block。網上是有非常多解說與教程,也有講得非常好的。這裡就主要解說下我的理解與收穫。歡迎拍磚。所謂block。我覺得應該是乙個閉包函式。而閉包,就是說block以及內部全部的變數生命週期都在其呼叫函式的生命週期內。它一被呼叫完畢,則會被立刻釋放。這裡不講執行機制,僅僅簡要地講基本的用法...
OC特有語法 Block
block 與函式指標的比較 有點像函式指標,可以作為引數傳遞,作為函式返回值 函式指標 void mypoint test 指向函式的指標。儲存函式名代表的指標變數 mypoint block 彌補了指向函式的指標不能夠直接儲存乙個函式體 void myblock 1 定義block變數 int ...