block類型
為興海等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及興海網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為做網(wǎng)站、網(wǎng)站建設、興海網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
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的重要意義:在處理異步任務時非常方便,這也是block應用的難點