关于iOS OC部分block的一点初级理论和应用

  
1.Block语法,使用
 (1)//无参数无返回值
void (^block)();
(2)//无参数但是有返回值的
int (^block1)();
(3)//有参数无返回值
void (^block2)(int a,int b);
(4)//有参数有返回值
int (^block3)(int a,int b);
***********
(5)//无参数无返回值
//实现
    block = ^(){printf(
"wucanwufanhuizhi\n");};
//调用
    block();
//无参数但是有返回值的
    block1 =^(){
return 0;};
   
printf("%d\n",block1());
//有参数无返回值
    block2 =^(
int a ,int b){
        NSLog(
@"%d=====%d",a,  b);
    };
    block2(
2,3);
//有参数有返回值
    block3 = ^(
int a,int b){
       
return a + b;
    };
    printf("%d\n",block3(4,5));
    //无参数无返回值
   
void (^block5)() = ^(){
       
printf("hdsggfhg");
    };
    block5();
   
//无参数有返回值
   
int (^block6)() =^(){
       
return 2;
    };
    block6();
   
//有参数无返回值
   
void(^block7)(NSString *) =^(NSString *array){
       
NSLog(@"%@",array);
    };
    block7(
@"hfduhg");
   
//有参数有返回值
   
NSMutableDictionary *(^block8)(NSDictionary *) =^(NSDictionary *dic){
       
return [dic mutableCopy];
    };
   
NSDictionary *dic = @{@"key1":@"obj1",@"key2":@"obj1"};
   
NSMutableDictionary *dict =block8(dic);
    [dict
setObject:@"obj3" forKey:@"key3"];
    NSLog(@"%@",[dict class]);
2.为block类型重命名,将NSInteger(^)(NSInteger,NSInteger)类型重命名为Block。在Block块语法内部可以使用全局变量,直接修改。在block块语法内部可以读取局部变量,不支持修改。若要修改,必须使用__block修饰。
    typedef NSInteger(^Block)(NSInteger,NSInteger);
   
   
Block block =^(NSInteger a,NSInteger b)
    {
       
return a > b ? a : b ;
    };
  
   
__block  NSInteger x = 32;
   
Block block1 =^(NSInteger a,NSInteger b){
        x ++;
       
return x;
    };

3.排序
第一步定义一个数组
NSArray *arr = @[@9,@3,@8,@5];
第二步 我们实现block
 NSComparator sortblock = ^(id obj1,id obj2){
        return [obj1 compare:obj2];          };
然后调用需要block的排序方式
   NSArray *resultarr = [arr sortedArrayUsingComparator:sortblock];
   
//第二种方法  
NSArray *arr1 =[arr copy ];
    NSArray *resultArr = [arr1 sortedArrayUsingComparator :^ NSComparisonResult ( id obj1, id obj2) {
       
return [obj1 compare :obj2];
    }];
    NSLog(@"%@",resultArr);


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值