欢迎光临
梦想从学习开始!

IOS Block基础用例| 小熊测试

本文主要介绍 IOS Block基础用例| 小熊测试,小熊希望对大家的学习或者工作具有一定的参考学习价值,在测试领域有所提升和发展。

  Block这渣渣,对于刚写IOS的人,肯定都是有很多疑惑的,我们先来说明Block的语法及用例。

  1.定义一个Block

  int num1 = 2;

  定义一个名为myBlock,返回值为int参数为空的 block

int (^myBlock)(void) = ^(void) {

return 10;

};

myBlock();

int (^myBlock1)(int) = ^(int num){

return num * 10;

};

myBlock1(num1);

void (^myBlock2)(int,int) = ^(int num1,int num2){

NSLog(@"num1 is : %d  num2 is : %d ",num1,num2);

};

myBlock2(num1,100);

  2.把block当做参数

  -(void) addPullToRefreshBlock:(void(^)(void))block {

  _cardTableView.mj_header = [MyMJHeader headerWithRefreshingBlock:^{

  block();

  }];

  }

  3.把block当做返回值

  - (void (^)(void)) method;

 
 4.typedef block

  typedef void (^BoolBlock)(BOOL);//一个只接受一个BOOL参数,没有返回值的block

  typedef int (^IntBlock)(void);//一个没有参数,返回int的block

  typedef BoolBlock (^HugeBlock)(IntBlock);//看看,这个HugeBlock的参数和返回值都是block

  同样,利用typedef后的 block 类型,就可以简化上面各种写法

  例如:

  block参数

  -(void) addPullToRefreshBlock:RefreshBlock block{

  //code

  }

  返回block

  -(BoolBlock) method;

 
 5.类的成员变量

  利用上面的 typedef后的类型

  @property (copy,nonatomic) BoolBlock myBlock;

  6.全局block

static int(^maxIntBlock)(int, int) = ^(int a, int b){return a>b?a:b;};

int main()

{

printf("%d", maxIntBlock(2,10));

return 0;

}

 
 7.__block

  如果要在block内修改block外声明的栈变量,那么一定要对该变量加__block标记

int main()

{

__block int i = 1024;

BoolBlock bBlock = ^(BOOL bV) {

if (bV) {

i++;//如果没有__block标记,是无法通过编译的。

}

};

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小熊分享邦(www.xxfxb.com),希望大家能坚持软件测试之路,谢谢。

赞(0) 打赏
未经允许不得转载:小熊分享邦 » IOS Block基础用例| 小熊测试

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏