第一節(jié) block基礎(chǔ)知識學(xué)習(xí)

Dear All 這次我們來學(xué)習(xí)block知識 ,廢話不說 、讓我們直奔主題

block也是一個指針,保存的是一段代碼塊在內(nèi)存中的空間 (棧內(nèi)存)
下面聲明一個最簡單的block:

/*
 void 返回值 表示調(diào)用這一段代碼會返回什么數(shù)據(jù)
 (^block1) block1表示代碼塊的名(指針名),但是需要在指針名前添加"^"
 (void) 參數(shù),里面跟的是參數(shù)類型和參數(shù)名,如果有多個參數(shù) 都寫在()中,但是需要用","分割
 */

void(^block1) (void) = NULL;

/*
^(void)表示的是block的參數(shù),需要把block聲明時的參數(shù)寫過來
然后在"("之前添加"^",")"后添加一對"{}",
該大括號的內(nèi)容就是該block的代碼塊內(nèi)容
*/
block1 = ^(void) {
      NSLog(@"-------");
};
block1();

無返回參數(shù) 和 有返回參數(shù) 的block使用

//無返回參數(shù)
void (^block2) (int a, int b) = ^(int a, int b) {
    NSLog(@"------>%d", a + b);
};
block2(5, 6);

//返回類型為int
int (^block3) (int a, int b) = ^(int a, int b) {
    return a + b;
};
NSLog(@"===>%d", block3(1, 2));

//再看下參數(shù)為 NSString 類型的
void (^bloak7) (NSString *text) = ^(NSString *text) {
    NSLog(@"hello world! %@", text);
};
bloak7(@"小明");

NSString * (^block8) ( NSString *) = ^( NSString * text) {
    return text;
};
NSLog(@"%@", block8(@"測試"));

以上的使用block都是表示某個類型的指針,使用場景多為某個方法當(dāng)中,那我我們?nèi)绾文軐lock作為一個參數(shù)傳遞呢 ?,接下來我們就把block定義為某一類型的指針函數(shù)。舉例如下

//下面的這三種Block 就不再表示某個指針,而是表示某一類型的指針 。例如 我可以用Block1來聲明 無參無返回的block指針

#import "ViewController.h"
typedef void (^Block4) (void);
typedef void (^Block5) (int a, int b);
typedef int  (^Block6) (int a, int b);

再我們用關(guān)鍵字 typedef 定義了Block 類型后,接下來的使用就舒服多了,舉例如下

Block1 block4 = ^(void) {
    NSLog(@"block4....");
};
block4();

Block2 block5 = ^(int m, int n) {
    NSLog(@"---==%d", m + n);
};
block5(10, 12);

Block3 block6 = ^(int a, int b) {
    return a + b;
};
int n = block6(10, 1);
NSLog(@"%d", n);

是不是頓時覺著使用起來舒服多了,哈哈這僅僅是個開始,接下來的章節(jié)我們將一起學(xué)習(xí)block 更精妙的部分 Learning together is Better
[第二節(jié) block知識學(xué)習(xí)(copy,__weak,__block)]
http://www.itdecent.cn/p/75f2d854e869

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容