<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                #### block總結與簡單代碼介紹 ##### block簡單介紹 代碼塊本質上是和其他變量類似。不同的是,代碼塊存儲的數據是一個函數體。使用代碼塊是,你可以像調用其他標準函數一樣,傳入參數數,并得到返回值。 脫字符(^)是塊的語法標記。按照我們熟悉的參數語法規約所定義的返回值以及塊的主體(也就是可以執行的代碼)。下圖是如何把塊變量賦值給一個變量的語法講解: ![]:([http://my.csdn.net/uploads/201208/07/1344323584_7609.png](http://my.csdn.net/uploads/201208/07/1344323584_7609.png)) 按照調用函數的方式調用塊對象變量就可以了: ##### 1、參數是NSString*的代碼塊 ~~~ int result = myBlock(4); // result是 28 [cpp] view plaincopy void (^printBlock)(NSString *x); printBlock = ^(NSString* str) { NSLog(@"print:%@", str); }; printBlock(@"hello world!"); 運行結果是:print:hello world! ~~~ ##### 2、代碼用在字符串數組排序 ~~~ [cpp] view plaincopy NSArray *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 plaincopy static 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 plaincopy int 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 plaincopy int 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 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看