Block传值

<span style="font-family: Arial, Helvetica, sans-serif;font-size:24px; background-color: rgb(255, 255, 255);">block分为两部分  ------  block需要调用才能使用(与函数调用类似)</span>

  左边:1.以返回值类型作为开头  2.后接一个小括号(^block)  3.最后的小括号里写参数的类型,没有就什么都不写 

  右边:1.^作为开头  2.(小括号里写形参列表)  3.大括号写函数实现的部分;

/<span style="font-size:18px;">/    void (^block)() = ^(){
//        NSLog(@"程锦");
//    
//    };
//    // block的调用(与函数调用类似)
//    block();</span>

用block实现从后向前传值 

1.先写block方法(受到里面形参使用范围的影响,只能写在大括号里能用,所以以后从后往前传值的时候,所有的操作都写在block里) 

2.要把block遥控器从前往后通过属性进行传值,block的类型是copy,后面部分和等号左边是一样的.  然后将遥控器传过去

<span style="font-size:18px;">//@property(nonatomic, copy)void(^block)();
//                        和等号左边是一样的</span>

3.然后将block赋值使用

- (void)click:(UIButton *)button{
    [self.navigationController popToRootViewControllerAnimated:YES];
    self.block(self.textField.text);
    
//    [self.delegate change];
#pragma mark 调用block
//    self.block();
//    self.newblock(self.textField.text);
}

<pre name="code" class="objc">  void (^block)() = ^(){
        NSLog(@"1111");
    };
    NSLog(@"%p", block);

    __block int a = 0;
    void (^block)() = ^(){
        a++;
        NSLog(@"%d", a);
    };
    NSLog(@"%p", block);


两个block打印的地址是不同的,第一个在堆区,第二个在栈区.  如果直接将a在block中进行操作,会报错,因为a在block中是只读的,加上__block之后就可以操作(两个下划线)




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值