Block語法的使用

2021-06-20 13:29:50 字數 1635 閱讀 7240

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 ...