欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

OC中Block語法、Block使用以及通過Block實(shí)現(xiàn)數(shù)組排序-創(chuàng)新互聯(lián)

Block:語法塊,本質(zhì)上是匿名函數(shù)(沒有名稱的函數(shù))

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、臨澧網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為臨澧等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

標(biāo)準(zhǔn)C里面沒有Block,C語言的后期擴(kuò)展版本,加入了匿名函數(shù)

在C++、JS、Swift等語言有類似語法,叫做閉包

Block語法和C語言里的函數(shù)指針很相似,下面我們先來回顧下C語言中的函數(shù)和函數(shù)指針

C語言中函數(shù)是指:實(shí)現(xiàn)某一功能的代碼段

完整的函數(shù)包括兩部分:函數(shù)聲明、函數(shù)定義

函數(shù)聲明,即函數(shù)原型。例如:int sum (int x,int y);具有兩個(gè)×××參數(shù),一個(gè)×××返回值的函數(shù)

函數(shù)定義,即函數(shù)實(shí)現(xiàn)。例如:int sum(int x,int y){

return x + y;

}

函數(shù)指針(變量):存放函數(shù)地址(函數(shù)名)的指針變量

int(*p)(int x,int )= sum;

函數(shù)指針類型:int(*)(int x,int y)即:指向兩個(gè)×××參數(shù),一個(gè)×××返回值函數(shù)的指針

函數(shù)指針變量:p

函數(shù)指針的值:sum

Block 匿名函數(shù):沒有名稱的函數(shù)

例如:int (int x,int y)

因?yàn)锽lock是匿名函數(shù),block變量存放的函數(shù)的實(shí)現(xiàn),通過block變量能直接調(diào)用函數(shù)

Block類型:int (^)(int)

Block變量:myBlock

Block值:^int (int num) {return 7*num;}

即:^返回值類型(參數(shù)列表){函數(shù)體}其中返回值類型可以省略

例如:寫一個(gè) 返回值為××× 參數(shù)為OC字符串(僅一個(gè)參數(shù))的block,實(shí)現(xiàn)將字符串轉(zhuǎn)換為×××的功能

 int (^myBlock)(NSString *) = ^(NSString *string) {

       return [string intValue];

   };
   NSLog(@"%d",myBlock(@"123"));

block的數(shù)據(jù)類型代表了匿名函數(shù)的格式(返回值類型,形參的類型)

block變量的定義與函數(shù)指針變量的定義類似,唯一區(qū)別于函數(shù)指針變量的是變量名前通過脫字符(^)修飾

首先應(yīng)該用^修飾,剩余的部分與C語言函數(shù)定義一致,大的不同就是沒有函數(shù)名(同時(shí)返回值類型也可以省略)

block變量在定義時(shí)具有變量定義的基本特征,賦值號(hào)右側(cè)的匿名函數(shù)可以當(dāng)做一個(gè)整體被賦值,類似于 int a = 5;

block變量所賦的值是匿名函數(shù)。又兼具函數(shù)的特征,并且是唯一可以定義在某個(gè)函數(shù)實(shí)現(xiàn)內(nèi)部(C語言中認(rèn)為函數(shù)是不能嵌套定義的,block是個(gè)特例)

Block進(jìn)行typedef

typedef int (^BlockType)(int x,int y)

原類型:int(^)(int x,int y)

新類型:BlockType

類比函數(shù)指針的類型定義,格式與函數(shù)指針一致,類型定義一定程度上簡化了block的使用。

   typedef int (^SumType)(int,int);
   SumType sumBlock = ^(int x,int y) {
       return x + y;
   };
   int result = sumBlock(5,4);
   NSLog(@"%d",result);

 __block類型標(biāo)識(shí)可以運(yùn)行局部變量在其后續(xù)定義的block內(nèi)部正常訪問,

   __block int num = 0;

   void (^testBlock)() = ^() {
       for (int i = 0; i < 10; i++) {
           count++;
           num++;
           NSLog(@"%d",count);
       }

   };

block調(diào)用

   testBlock();

數(shù)組使用Block排序

OC中Block語法、Block使用以及通過Block實(shí)現(xiàn)數(shù)組排序

數(shù)組使用Block對(duì)兩個(gè)字符串進(jìn)行比較

   NSComparisonResult (^compareBlock)(NSString *,NSString *) = ^(NSString *str1,NSString *str2) {

       return [str2 compare:str1];

//如果是升序返回-1,如果是降序返回1,如果相等返回0

   };

   NSLog(@"%ld",compareBlock(@"11",@"12"));

OC中Block語法、Block使用以及通過Block實(shí)現(xiàn)數(shù)組排序

   NSArray *array = @[@1,@2,@13,@12,@23];
   NSArray *resultArray1 = [array sortedArrayUsingSelector:@selector(compare:)];
   NSLog(@"%@",resultArray1);

數(shù)組使用Block排序   降序排列

  NSComparator sortBlock = ^(id obj1,id obj2) {

       return [obj2 compare:obj1];
   };
   NSArray *resultArray2 = [array sortedArrayUsingComparator:sortBlock];
   NSLog(@"%@",resultArray2);

升序序排列

  NSArray *resultArray3 = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

       return [obj1 compare:obj2];

   }];

  NSLog(@"%@",resultArray3);

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁標(biāo)題:OC中Block語法、Block使用以及通過Block實(shí)現(xiàn)數(shù)組排序-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://www.chinadenli.net/article8/docdip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)小程序開發(fā)手機(jī)網(wǎng)站建設(shè)網(wǎng)站制作靜態(tài)網(wǎng)站網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)