iOS开发block篇---block传值
iOS开发block篇---block传值
琳小兮 发表于3年前
iOS开发block篇---block传值
  • 发表于 3年前
  • 阅读 83
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 以前用代理传值用的最多,但是个人觉得很麻烦,不方便。于是找时间学习了下block得用法,虽然只是学会了一点点,但是用来传值还是非常有帮助得
 //int a 就是参数列, return a*a; 就是行为主体,后面的小括号里面的5会被当成a的输入值
    int result = ^(int a){return a*a;}(5);
    NSLog(@"---result...%d",result);
    
    //声明一个iBlock的Block指针,其所指向的Block有一个int类型得返回值和int类型得参数
    int(^iBlock)(int);
    //将Block实体指定给iBlock
    iBlock = ^(int a){ return a+2;};
    //调用
    int bb = iBlock(10);
    NSLog(@"----bb....%d",bb);
    
    //cBlock在其主体中用到的outA这个常量值的时候做了一个copy的动作,把c的值copy下来。所以,之后c即使换成了新的值,对于cBlock里面copy的值是没有影响的.如果是static类型的常量就可以直接在block里面修改c的值
    static int c = 5;
    int (^cBlock)(int) = ^(int ccc){c = 8;return ccc*c;};
    NSLog(@"---c...%d",cBlock(2));
    
    //如果是指针类型,可以直接在block里面修改
    NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"one",@"two",@"three", nil];
    //直接赋值a为2
    int aarrr = ^(int a){[arr removeLastObject];  return a*a;}(2);
    NSLog(@"--aarrr...%d---arr...%@",aarrr,arr);
    
    //在某个变量前面如果加上修饰字“__block"(注意是两个下划线)的话,也可以直接在block里面修改此变量的值
    __block int v = 0;
    //调用vBlock赋值a为2
    int (^vBlock)(int) = ^(int a){ v = 3; return a*v;};
    NSLog(@"---abc...%d",vBlock(2));
  //下面记录一下block得传值,a页面push到BTPushViewController页面,BTPushViewController页面pop回a页面得时候将值传给a页面
    //在BTPushViewController页面.h中声明一个块
typedef void (^myBlock)(int);
    //定义当前块的属性和方法
@property (nonatomic,assign)myBlock senBlock;
-(void)returnBlock:(myBlock)senderBlocks;

    //BTPushViewController页面得.m中
-(void)returnBlock:(myBlock)senderBlocks
{
    self.senBlock = senderBlocks;
}

 //返回按钮
- (void)navLeftBtnAction:(UIButton *)btn
{
    //用block进行传值
    if (self.senBlock) {
        self.senBlock(15);
    }
    [self.navigationController popViewControllerAnimated:YES];
}

//在a页面push到BTPushViewController页面得跳转方法里面这样写
-(void)doButton
{
    BTPushViewController *pushs = [[BTPushViewController alloc] init];

    pushs.senBlock = ^(int a)
    {
        NSLog(@"--------block传值%d",a);
    };
    
    [self.navigationController pushViewController:pushs animated:YES];
}


标签: block 传值
共有 人打赏支持
粉丝 30
博文 28
码字总数 17320
×
琳小兮
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: