<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [OC] Block 是什么

        Block 是 帶有自動變量的匿名函數。

         emmmm 反正我看了也不懂,我們一點點用具體的例子分析一下block。

        1. 我們現在要在一個文件中使用block(我們后面再提到兩個界面傳值的block的例子??)

         void (^ourblo)(void);

      這樣就聲明了一個叫做 ourblo 的 block,但是他是空的。

      符號 " ^ " 代表block,這個block的名字叫做 " ourblo "。(里面的幾個void我們后面再說)

        我們有以下這個例子:

          void (^ourblo)(void) = ^(void){
              NSLog(@"呵呵");
          };
        
          ourblo();

      在這里我們給他賦了一個值(即 等號后面的內容)。

      我們可以把它看作一個函數,這個函數的內容就是打印“呵呵”兩個字。

      在聲明了這個block之后,我們直接用 ourblo() 的方式就可以使用它。

        2.現在我們需要使用一個,可以傳值進去的block,我們把上面的代碼稍微改一下,就可以得到下面這個:

          void (^ourblo)(NSString *str) = ^(NSString *str){
              NSLog(@"%@", str);
          };
          
          NSString *myStr = @"呵呵呵";
          
          ourblo(myStr);

      注意看,我們把第一個例子里的 兩個 void 都替換成了 NSString *str,這就是我們要傳給這個函數的輸入值。

      這個時候,ourblo的功能就變成了,打印出我們傳給它的字符串。

        3.繼續,我們現在需要一個block幫我們判斷,我們傳入的字符串是不是“呵呵”:

          BOOL (^ourblo)(NSString *str) = ^(NSString *str){
              if ([str isEqualToString:@"呵呵"]) {
                  //字符串是“呵呵”
                  return YES;
              } else {
                  return NO;
              }
          };
          
          NSString *myStr = @"呵呵";
          
          BOOL isHeHe = ourblo(myStr);

      我們把剩余的最后一個 void 改成 BOOL ,這就是我們想得到的這個函數輸出的值的類型。

      這個例子里,函數就滿足了我們上面說的這個功能。是“呵呵”的時候他會返回 YES,不是的時候會返回 NO。

        4.在上面的例子里,我們把block當作函數去理解。不過 block 是可以被賦值的,比如下面這樣:

          BOOL (^ourblo)(NSString *str);//這句代碼 初始化 ourblo
          
          ourblo = ^(NSString *str) {
            if ([str isEqualToString:@"呵呵"]) {
                return YES;
            } else {
                return NO;
            }
          };
          
          NSString *myStr = @"呵呵";
      
          BOOL isHeHe = ourblo(myStr);
          
          // 對 ourblo 重新賦值
          ourblo = ^(NSString *str) {
              return NO;
          };
          
          BOOL isHeHe2 = ourblo(myStr);
          
          NSLog(@"%@,%@",@(isHeHe), @(isHeHe2));

      我們對 ourblo 進行重新賦值,會看到最后打印出來的結果是 1 , 0

      即一個 YES,一個 NO,說明重新賦值之后,再使用 ourblo時,它的邏輯確實被修改了。

        5.在另一篇里講了如何通過 block 實現兩個頁面的傳值和交互。

            http://www.rzrgm.cn/OranBlog/p/5861826.html

      其實,它的原理可以看作,B中定義的“函數”,在 A 中被賦值,然后被B調用。

      posted @ 2020-04-03 15:23  Oran  閱讀(305)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 香港日本三级亚洲三级| 亚洲国产精品日韩AV专区| 久久99国产精品久久99| 亚洲日韩国产二区无码| 日韩熟女精品一区二区三区| 日韩国产亚洲欧美成人图片| 四虎国产精品永久入口| 中文字幕av日韩有码| 最新偷拍一区二区三区| av综合亚洲一区二区| 强插少妇视频一区二区三区| 日韩欧美视频一区二区三区| 福利视频在线一区二区| 国产精品国产精品偷麻豆| 无码精品国产va在线观看| 亚洲国产精品综合久久网各| 国产精品视频亚洲二区| 日本高清在线观看WWW色| 亚洲国产成人无码影片在线播放| 国产999久久高清免费观看| 一区二区三区激情免费视频| 大又大又粗又硬又爽少妇毛片 | 邻居少妇张开腿让我爽了一夜| 国产日韩精品欧美一区喷水| 亚洲国产精品男人的天堂| 国产成人高清精品亚洲| 亚洲精品漫画一二三区| 内射中出无码护士在线| 久久精品丝袜高跟鞋| 亚洲精国产一区二区三区| 鲁丝一区二区三区免费| 国产午夜精品理论大片| 99久久精品国产一区色| 久久久久亚洲AV成人片一区| 久久久精品94久久精品| 日韩一区在线中文字幕| 中文字幕人妻不卡精品| 亚洲欧洲一区二区综合精品| 久九九精品免费视频| 长腿校花无力呻吟娇喘| 日本精品一区二区不卡|