99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

OC中Block語法、Block使用以及通過Block實現數組排序-創新互聯

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

創新互聯專注于企業成都全網營銷、網站重做改版、臨澧網站定制設計、自適應品牌網站建設、H5建站、購物商城網站建設、集團公司官網建設、成都外貿網站制作、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為臨澧等各大城市提供網站開發制作服務。

標準C里面沒有Block,C語言的后期擴展版本,加入了匿名函數

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

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

C語言中函數是指:實現某一功能的代碼段

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

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

函數定義,即函數實現。例如:int sum(int x,int y){

return x + y;

}

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

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

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

函數指針變量:p

函數指針的值:sum

Block 匿名函數:沒有名稱的函數

例如:int (int x,int y)

因為Block是匿名函數,block變量存放的函數的實現,通過block變量能直接調用函數

Block類型:int (^)(int)

Block變量:myBlock

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

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

例如:寫一個 返回值為××× 參數為OC字符串(僅一個參數)的block,實現將字符串轉換為×××的功能

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

       return [string intValue];

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

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

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

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

block變量在定義時具有變量定義的基本特征,賦值號右側的匿名函數可以當做一個整體被賦值,類似于 int a = 5;

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

Block進行typedef

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

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

新類型:BlockType

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

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

 __block類型標識可以運行局部變量在其后續定義的block內部正常訪問,

   __block int num = 0;

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

   };

block調用

   testBlock();

數組使用Block排序

OC中Block語法、Block使用以及通過Block實現數組排序

數組使用Block對兩個字符串進行比較

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

       return [str2 compare:str1];

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

   };

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

OC中Block語法、Block使用以及通過Block實現數組排序

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

數組使用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);

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

網頁標題:OC中Block語法、Block使用以及通過Block實現數組排序-創新互聯
網頁網址:http://www.yijiale78.com/article8/docdip.html

成都網站建設公司_創新互聯,為您提供網站設計、小程序開發手機網站建設、網站制作、靜態網站網站設計公司

廣告

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

h5響應式網站建設