Block

代码块概述

*BlockIOS4.0之后新增的一种语法结构也称之为“闭包(closure)”。
*SDK4.0新增的ApI大量使用了Block
代码块的功能

Objective-C加入了代码块的功能,它可以将一块代码当做一个对象一样对待,并且传递给其他方法或函数。代码块可以进行复用。


Block的声明
*int (^myblock)(int);
*返回值
*Myblock变量
*参数列表

Block的创建
* myblock =^(inta){
*        NSLog(@"参数:%d",a);
*           return 10;
*     };

Block的调用
*myblock(20);
定义block类型
*typedefint (^MyBlock) (int);
*
*
*MyBlockmyblock =^(inta){
*       NSLog(@"这个是block代码块:%d",a);
*        return 20;
*    };

*声明一个block参数

- (void)testBlock:(int (^)(int))myblock;

-(void)testBlock:(MyBlock)myblock;

调用block作为参数传递

[selftestBlock:myblock];


*变量按作用域可以分为全局变量和局部变量。
*Block代码块内可以引用这两种变量,但是它又一定的限制。

*Block引用局部变量时,该变量会作为常量编码到block中。
*局部变量需要使用__block,才能在块中修改。
*intnumber = 10;
*   
*   MyBlockmyblock = ^(int a){
*       
*        number = 20;
*        number++;//错误
*       
*       NSLog(@"这个是block代码块:%d",a);
*        return 20;
*    };

*__blockintnumber = 10;
*   
*   MyBlockmyblock = ^(int a){
*       
*        number = 20;
*        number++;//正确
*       
*       NSLog(@"这个是block代码块:%d”,number);
*        return 20;
*    };

使用代码块对数组排序

*intmain(intargc,constchar *argv[]){
* NSMutableArray *mArr =[NSMutableArray
*                            arrayWithObjects :@"bde",@"Abc",@"aCd",@"Ebf",nil];
*    [mArrsortUsingComparator:
*     ^NSComparisonResult(idx,idy){
*         return [x compare: y];
*     }];
*    for(NSString *obj inmArr){
*       NSLog(@"%@",obj);
*    }
*}

代码块的应用

*//动画
*    [UIView animateWithDuration:0.5 animations:^{
*       //主体代码
*   }];
*  //模态视图
*    [selfpresentViewController:<#(UIViewController*)#> animated:<#(BOOL)#> completion:<#^(void)completion#>];

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值