溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Objective-C(13)代碼塊---block

發(fā)布時間:2020-07-03 06:00:35 來源:網(wǎng)絡(luò) 閱讀:386 作者:ymanmeng123 欄目:移動開發(fā)
  • block類型

block是一種數(shù)據(jù)類型,在iOS開發(fā)中廣泛使用且被蘋果公司極力推薦使用,其功能很像C語言中的函數(shù)指針。

     ^ 是block的特有標志。

     block的實現(xiàn)代碼包含在{ }中。

     大多數(shù)情況下,以內(nèi)聯(lián)的形式被定義及使用。


void (^demoBlock)() = ^ {
    NSLog(@"demo Block");
}
int (^sumBlock)(int, int) = ^(int x, int y) {
    return x + y;
}

 

block的使用和函數(shù)指針的使用類似

int (^sumblock)(int, int) = ^(int a, int b) {
    return a>b?a:b;
}
int c = sumblock(10, 20);
NSLog(@"c=%d", c);


block內(nèi)部可以訪問外部的變量

     外部的局部變量,block內(nèi)部不能修改,全局變量可以。

     如果局部變量使用__block聲明,則可以在內(nèi)部修改。

int a = 10;
__block int b = 20;
void (^myblock)();
myblock = ^ {
    NSLog(@"a=%d", a);
    b = 20;
}
myblock();

     

實際上,定義block時會對局部變量進行拷貝(副本)


block的重要意義:在處理異步任務(wù)時非常方便,這也是block應(yīng)用的難點



向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI