day13---block

一 Block
block是一种数据类型,用来存储(封装)代码块,跟函数很相似,官方非常推荐使用Block,效率高,性能高。。。

Block跟函数的区别:

1.函数在编译的时候就要先确定;

2.Block可以在运行过程中产生一些代码块,而且这些代码块可以作为参数被传      来传去;

3.Block可以作为方法的参数,方法的返回值,还可以作为对象的属性;

4.函数和Block都可以封装一段代码,都可以带参数,都有返回值,调用方式一  样;


  【Block主要使用在多线程,异步任务下载,集合排序,动画转场,Block传值】;
【Demo1】-【1-Block的基本语法】
    //带参数的,有返回值的Block代码块;
    
    int(^sumBlock)(int,int)=
    ^(int a,int b){
        return a+b;
    };
    
    int sum = sumBlock(4,6);
    NSLog(@"%d",sum);


【Demo2】-【2-使用typedef定义Block类型】



【Demo3】-【3-Block作为方法的参数,返回值,属性】
typedef void (^MyBlock1)(NSString *);
typedef void  (^MyBlock2)(int a,int b);
typedef void (^MyBlock3)(NSString *);


-(void)method1:(MyBlock2)block2{
block2(10,20);
NSLog(@"method1这个方法被调用了");
}


-(MyBlock3)method2{
return ^(NSString *str){
    NSLog(@"str = %@",str);
    NSLog(@"method2被调用了!");
};
}

-(void)method3{
//调用属性这个代码块;
//回调
self.block1(@"杨迪被 method3 调用了");
}

在主函数中
        Person *per = [[Person alloc] init];
    //1.block作为对象的属性,如何赋值
    per.block1 = ^(NSString *str){

// NSLog(@"杨迪十个大傻逼,,代码块!");
NSLog(@"str = %@",str);
};

    [per method3];
    
    
    //2.block作为方法的参数
    [per method1:^(int a,int b) {
        
        int sum = a+b;
        NSLog(@"sum = %d",sum);
    }];
    
    //3.block作为返回值
    MyBlock3 block3 = [per method2];
    block3(@"杨第是个但傻叉 block3");
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,328评论 18 399
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,390评论 30 472
  • 前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这...
    小人不才阅读 9,151评论 0 23
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,929评论 25 709
  • <1> 一个年轻的妹妹说,小时候听别人“祝你幸福、平安、快乐!”好普通,甚至会嗤之...
    Cicily_阅读 3,878评论 2 3

友情链接更多精彩内容