Block的使用

1.什么是Block?

  • Block是iOS中的數(shù)據(jù)類型(定義變量 、形參、返回值)。
  • Block是蘋果官方推薦使用的數(shù)據(jù)類型。
    • 動畫。
    • 多線程。
    • 集合遍歷。
    • 網(wǎng)絡(luò)請求的回調(diào)。
  • Block的作用
    • 用來保存某一段代碼,可以在恰當(dāng)?shù)臅r間再取出來調(diào)用。
    • 功能類似于函數(shù)和方法。
      2.Block的格式
  • Block的定義格式
返回值類型(^block變量名)(形參列表) = ^(形參列表){

};
  • 指向函數(shù)的指針
void printRose()
{
  printf(" {@}\n");
  printf("  | \n");
  printf(" \\|/\n");
  printf("  |\n");
}
//void代表指向的函數(shù)沒有返回值
//()代表指向的函數(shù)沒有形參
//(* roseP)代表roseP是一個指向函數(shù)的指針
void (*roseP) ();
roseP = printRose;
roseP();
  • 定義一個Block變量(和定義指向函數(shù)的指針很像)
//void代表Block將來保存的代碼沒有返回值
//()代表Block將來的保存的代碼沒有形參
//(^roseBlock)代表roseBlock是一個Block變量,可以用于保存一段Block代碼
void (^roseBlock) ();
roseBlock = ^{
      printf(" {@}\n");
      printf("  | \n");
      printf(" \\|/\n");
      printf("  |\n");
  };
  //調(diào)用Block才會執(zhí)行Block保存的代碼
  roseBlock();
  • 帶參數(shù)的Block
 void (^roseBlcok) (int);
 roseBlcok = ^(int num){
     for (int i; i < num; i++) {
         printf(" {@}\n");
         printf("  | \n");
         printf(" \\|/\n");
         printf("  |\n");
     }
 };
 roseBlcok(2);
  • typedef 和 Block

    //利用typedef給Block起別名,和函數(shù)的指針一樣,Block變量的名稱就是別名
    typedef int (^caculte) (int,int);
    //實現(xiàn)
    caculte sum = ^(int value1, int value2){
        return value1 + value2;
    };
    
    NSLog(@"sum = %i",sum(5,7));
    
    caculte minus = ^(int value1, int value2){
        return value1 - value2;
    };
    NSLog(@"sum = %i",minus(5,7));
    
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容