中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Block 語法基礎

發布時間:2020-07-14 13:27:20 來源:網絡 閱讀:417 作者:sanminx 欄目:開發技術

Declaring and Using a Block(定義和使用Block)

1— 無參的block

  1. // 1 無參 
  2.         void (^myblocks) (void) = NULL;//聲明 
  3.         myblocks = ^(void){ 
  4.             NSLog(@"myblocks"); 
  5.         };// 給myblcok 賦值 
  6. myblocks(); //調用

2— 帶參的block

 

  1. int multiplier = 7;  
  2. int (^myBlock)(int) = ^(int num) {  
  3.     return num * multiplier;  
  4. }; 
  5. printf("%d",myBlock(3));
  6. // prints "21"

 

 

3—— 有返回值,帶參block

 

  1. int (^myblocks2) (int a, int b) = ^(int a ,int b){ 
  2.             int c = a+b; 
  3.             return c; 
  4.         }; 
  5. int ret = myblocks2(2,3); 
  6.  // prints  "5"

 

 

Block 語法基礎

Block 語法基礎

 Block 語法基礎

截至到目前位置,都先聲明了block,再對block 賦值!其實你完全可以直接使用一個block

 

Using a Block Directly

 

In many cases, you don’t need to declare block variables;(大部分情況下,你無需聲明一個block 變量)

本例子:將數組逆序

  1. char *myCharacters[3] = { "TomJohn", "George", "Charles Condomine" }; 
  2.  
  3. qsort_b(myCharacters, 3, sizeof(char *), ^(const void *l, const void *r) { 
  4.     char *left = *(char **)l; 
  5.     char *right = *(char **)r; 
  6.     return strncmp(left, right, 1); 
  7. }); 
  8.  
  9. // myCharacters is now { "Charles Condomine", "George", "TomJohn" } 

Blocks with Cocoa

 

  1. Several methods in the Cocoa frameworks take a block as an argument, typically 
  2. either to perform an operation on a collection of objects, or to use as a callback
  3.  after an operation has finished. The following example shows how to use a block with
  4.  the NSArray method sortedArrayUsingComparator:. The method takes a single argument—the
  5.  block. For illustration, in this case the block is defined as an NSComparator local 
  6. variable: 

 take a block as an argument,(將block 作為參數) typically either to perform an operation on a collection of objects, or to use as a callback after an operation has finished.(通常要么執行操作在對象集合、或者操作回調)下面簡單的例子展示了如何在NSArray 的方法 sortedArrayUsingComparator: 中使用block,該方法將block作為一個參數。為了解釋說明,本例子的block被定義為一個NSComparator 的本地變量。

本例子:NSArray 排序

  1. NSArray *stringsArray = [NSArray arrayWithObjects: 
  2.                                  @"string 1", 
  3.                                  @"String 21", 
  4.                                  @"string 12", 
  5.                                  @"String 11", 
  6.                                  @"String 02", nil]; 
  7.   
  8. static NSStringCompareOptions comparisonOptions = NSCaseInsensitiveSearch | NSNumericSearch | 
  9.         NSWidthInsensitiveSearch | NSForcedOrderingSearch; 
  10. NSLocale *currentLocale = [NSLocale currentLocale]; 
  11.   
  12. NSComparator finderSortBlock = ^(id string1, id string2) { 
  13.   
  14.     NSRange string1Range = NSMakeRange(0, [string1 length]); 
  15.     return [string1 compare:string2 options:comparisonOptions range:string1Range locale:currentLocale]; 
  16. }; 
  17.   
  18. NSArray *finderSortArray = [stringsArray sortedArrayUsingComparator:finderSortBlock]; 
  19. NSLog(@"finderSortArray: %@", finderSortArray); 
  20.   
  21. /* 
  22. Output: 
  23. finderSortArray: ( 
  24.     "string 1", 
  25.     "String 02", 
  26.     "String 11", 
  27.     "string 12", 
  28.     "String 21" 
  29. */ 

__block Variables(__block 變量(關鍵字))

__block 修飾臨時變量,可讓其變為全局的變量。(引用自身作用域外的變量)

Block 語法基礎

__block 參數全局聲明

  1. __block int sum = 0
  2. int (^myblock3) (int a,int b) = ^(int a ,int b){ 
  3.     sum = a+b; 
  4.     return sum; 
  5. }; 
  6. ret = myblock3(2,3); 
  7. NSLog(@"block3 %d",ret); 

  1. NSArray *stringsArray = [NSArray arrayWithObjects: 
  2.                          @"string 1", 
  3.                          @"String 21", // <- 
  4.                          @"string 12", 
  5.                          @"String 11", 
  6.                          @"Strîng 21", // <- 
  7.                          @"Striñg 21", // <- 
  8.                          @"String 02", nil]; 
  9.   
  10. NSLocale *currentLocale = [NSLocale currentLocale]; 
  11. __block NSUInteger orderedSameCount = 0
  12.   
  13. NSArray *diacriticInsensitiveSortArray = [stringsArray sortedArrayUsingComparator:^(id string1, id string2) { 
  14.   
  15.     NSRange string1Range = NSMakeRange(0, [string1 length]); 
  16.     NSComparisonResult comparisonResult = [string1 compare:string2 options:NSDiacriticInsensitiveSearch range:string1Range locale:currentLocale]; 
  17.   
  18.     if (comparisonResult == NSOrderedSame) { 
  19.         orderedSameCount++; 
  20.     } 
  21.     return comparisonResult; 
  22. }]; 
  23.   
  24. NSLog(@"diacriticInsensitiveSortArray: %@", diacriticInsensitiveSortArray); 
  25. NSLog(@"orderedSameCount: %d", orderedSameCount); 
  26.   
  27. /* 
  28. Output: 
  29.   
  30. diacriticInsensitiveSortArray: ( 
  31.     "String 02", 
  32.     "string 1", 
  33.     "String 11", 
  34.     "string 12", 
  35.     "String 21", 
  36.     "Str\U00eeng 21", 
  37.     "Stri\U00f1g 21" 
  38. orderedSameCount: 2 
  39. */ 

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霍山县| 玉田县| 疏勒县| 永州市| 波密县| 岚皋县| 台南县| 崇左市| 慈利县| 政和县| 调兵山市| 稷山县| 托里县| 新龙县| 榕江县| 开平市| 兴安盟| 始兴县| 玉屏| 常州市| 思茅市| 翁牛特旗| 云龙县| 博客| 辽源市| 盐城市| 东兴市| 云南省| 汉川市| 贵州省| 钟祥市| 保康县| 二连浩特市| 西乌珠穆沁旗| 怀化市| 安庆市| 弋阳县| 奉新县| 绥中县| 仁怀市| 蛟河市|