麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Objective-C語法之代碼塊(block)的使用

2019-11-09 17:54:38
字體:
來源:轉載
供稿:網友
代碼塊本質上是和其他變量類似。不同的是,代碼塊存儲的數據是一個函數體。使用代碼塊是,你可以像調用其他標準函數一樣,傳入參數數,并得到返回值。

脫字符(^)是塊的語法標記。按照我們熟悉的參數語法規約所定義的返回值以及塊的主體(也就是可以執行的代碼)。下圖是如何把塊變量賦值給一個變量的語法講解:

按照調用函數的方式調用塊對象變量就可以了:int result = myBlock(4); // result是 28

1、參數是NSString*的代碼塊

[cpp] view plaincopyvoid (^PRintBlock)(NSString *x);  printBlock = ^(NSString* str)  {      NSLog(@"print:%@", str);  };  printBlock(@"hello world!");  運行結果是:print:hello world!

2、代碼用在字符串數組排序

[cpp] view plaincopyNSArray *stringArray = [NSArray arrayWithObjects:@"abc 1", @"abc 21", @"abc 12",@"abc 13",@"abc 05",nil];  NSComparator sortBlock = ^(id string1, id string2)  {      return [string1 compare:string2];  };  NSArray *sortArray = [stringArray sortedArrayUsingComparator:sortBlock];  NSLog(@"sortArray:%@", sortArray);  運行結果:sortArray:(

    "abc 05",

    "abc 1",

    "abc 12",

    "abc 13",

    "abc 21"

)

3、代碼塊的遞歸調用

代碼塊想要遞歸調用,代碼塊變量必須是全局變量或者是靜態變量,這樣在程序啟動的時候代碼塊變量就初始化了,可以遞歸調用

[cpp] view plaincopystatic void (^ const blocks)(int) = ^(int i)  {      if (i > 0) {          NSLog(@"num:%d", i);          blocks(i - 1);      }  };  blocks(3);  運行打印結果:

num:3

num:2

num:1

 4、在代碼塊中使用局部變量和全局變量

在代碼塊中可以使用和改變全局變量

[cpp] view plaincopyint global = 1000;  int main(int argc, const char * argv[])  {      @autoreleasepool {          void(^block)(void) = ^(void)          {              global++;              NSLog(@"global:%d", global);          };          block();          NSLog(@"global:%d", global);      }      return 0;  }  

運行打印結果:

global:1001

global:1001

而局部變量可以使用,但是不能改變。

[cpp] view plaincopyint local = 500;  void(^block)(void) = ^(void)  {        local++;      NSLog(@"local:%d", local);  };  block();  NSLog(@"local:%d", local);  在代碼塊中改變局部變量編譯不通過。怎么在代碼塊中改變局部變量呢?在局部變量前面加上關鍵字:__block

[cpp] view plaincopy__block int local = 500;  void(^block)(void) = ^(void)  {      local++;      NSLog(@"local:%d", local);  };  block();  NSLog(@"local:%d", local);  運行結果:local:501

                    local:501

轉載:http://blog.csdn.net/totogo2010/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嗯~啊~弄嗯~啊h高潮视频 | 亚洲成人在线免费 | 免费永久看羞羞片网站入口 | 竹内纱里奈和大战黑人 | 91精品国产一区二区三区四区在线 | 九九热视频免费 | 一区二区久久精品66国产精品 | 91成人久久 | 免费视频a | 99爱国产精品 | 久夜tv| 九九热免费在线观看 | 在线免费日本 | 免费的性生活视频 | 欧美久久一区 | 久久久久se | asian gaysex| 中文字幕免费看 | 九九热视频免费 | 西川av在线一区二区三区 | 黄色片网站在线播放 | 亚洲第一成人av | 伊人久操视频 | 免费观看高清视频网站 | 欧美视频在线一区二区三区 | 97视频| 黄色免费高清网站 | 毛片视频免费观看 | 欧美在线一级 | 狠狠操夜夜爱 | 国产精品18久久久久久久久 | 免费看一级毛片欧美 | 国产精品麻豆一区二区三区 | 久久一本日日摸夜夜添 | 久久国产精品99久久人人澡 | 欧美精品免费一区二区三区 | 一级黄色在线免费观看 | 一区二区三区日本在线观看 | 久久久电影电视剧免费看 | 亚洲一区二区三区高清 | 性视频久久 |