IOS开发之我对block的认识总结

一、block定义

      用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行

 在iOS中用“^”声明block变量,block的内容是包含在”{}“中的,用”;“表示语句结束。

1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样。

 //1. 无返回值无参数的block写法
    
    // 声明了一个void(^)(void)类型的变量 block
    void (^block)(void) = ^(void){
        NSLog(@"hello word!");
    };
    // block变量的的使用

    block();

// 2. 有返回值,无参数
    
    int (^block1)(void) = ^(void){
        
        return 100;
    };
    NSLog(@"%d", block1());
    // 3. 无返回值,有参数
    void (^block2)(int a,int b) = ^(int a, int b){
      
        NSLog(@"%d", a + b);
    };
    
    block2(3, 5);

// 4. 有返回值, 有参数
    
    NSString *(^block3)(NSString *str1, NSString *str2) = ^(NSString *str1, NSString *str2){
        NSString *str3 = [str1 stringByAppendingString:str2];
        return str3;
    };
    
    NSString *a =  block3(@"hello", @" word!");
    NSLog(@"%@", a);
    
    
    
    NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"bbb", @"aaa", @"ccc", @"ddd", @"eee", nil];
    
    [arr sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        
        return [obj2 compare:obj1];
    }];
    
    
    NSLog(@"%@", arr);


二、使用block页面传值

使用条件:(由后一页往前一页传值)

步骤:1.

// 写一个block的属性 属性必须使用copy
#warning block传值1: 给第二个页面写一个block参数, 由第一个页面创建,赋给第二个页面使用
@property (nonatomic, copy) void(^changeName)(NSString *str);
步骤:2.
#warning block传值2: 第一个页面创建一个block参数, 给第二个页面赋值

    [second setChangeName:^(NSString *str) {
        // 利用block的参数给自己的按钮重新赋值
        [button setTitle:str forState:UIControlStateNormal];
        NSLog(@"1");
    }];
步骤:3.
<span style="font-size:18px;">#warning block传值3: 在合适的地方, 使用block参数
    self.changeName(_textField.text);</span>
<pre name="code" class="plain">
步骤:4.

 
 
- (void)dealloc
{
    Block_release(_changeName);
    [super dealloc];
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值