ww笔记-iOS之代码块(block)的使用


1.单例

+(BlockData *)share{
    static BlockData * blockData=nil;
    dispatch_once_t once;
    dispatch_once(&once ,^{
        blockData=[[BlockData alloc]init];
    });
    return blockData;
}

2.遍历数组、快速查找

    //遍历数组
    /*
        id obj 表示数组中的元素。
        NSUInteger idx 标示元素的下标.
        其中将stop设为YES,就跳出循环,不继续遍历了。
     */
    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        //对数组中元素的操作
        [(UIButton *)obj removeFromSuperview];
    }];
    
    //快速查找
    NSString * str=@"我是要查找的字符串";
    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        if ([obj localizedCaseInsensitiveCompare:str]==NSOrderedSame) {
            // 对返回的obj做点别的事情
            *stop=YES;

        }
    }];

3.回调

typedef void (^amountBlock)(int salary);
//模拟公司给员工发奖金
//给指定员工发奖金
-(void)payBonusForStaff:(int)staffId withMoney:(amountBlock)amount{
    //参数是int的代码块
    amount(5000);//给员工编号为staffId的员工发5000奖金
  
}

//回调方法
     在员工类中现实
     1.创建公司类对象   C
     2.回调此函数
     [C paySalaryForStaff:001 withMoney:^(int salary) {
            //员工001领到奖金后的操作
     
     }];

4.递归

static void (^ const blocks)(int) = ^(int i)  
{  
    if (i > 0) {  
        NSLog(@"num:%d", i);  
        blocks(i - 1);  
    }  
};  
blocks(3); 

5.在代码块中使用局部变量

    __block int local = 500;//要改变局部变量,需在变量前增加"__"
    void(^myblock)(void) = ^(void)
    {
        local++;
        NSLog(@"local:%d", local);
    };
    myblock();//调用
    NSLog(@"local:%d", local);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值