博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Block详情
阅读量:4455 次
发布时间:2019-06-07

本文共 3605 字,大约阅读时间需要 12 分钟。

1 #import "ViewController.h"  2   3 @interface ViewController ()  4   5 @end  6   7 @implementation ViewController  8   9 - (void)viewDidLoad { 10     [super viewDidLoad]; 11     //没有返回值 12     //[self testNoReturnValue]; 13     //[self testIntReturnValue]; 14     //[self testNSStringReturnValue]; 15     [self test]; 16 } 17 -(void)test 18 { 19     //1.没有返回值,参数为对象类型 20     void (^block1)(NSString *param) = ^(NSString *param){ 21         NSLog(@"%@",param); 22     }; 23     block1(@"test"); 24      25     //2.返回值为对象类型,两个基本类型的参数 26     NSString *(^block2)(int,int) = ^(int a,int b){ 27         return [NSString stringWithFormat:@"%d",a+b]; 28     }; 29     NSString *ret = block2(10,20); 30     NSLog(@"%@",ret); 31 } 32  33 //有返回值,返回值为对象类型(NSString) 34 -(void)testNSStringReturnValue 35 { 36     //1.没有参数 37     NSString *(^block1)(); 38     block1 = ^{ 39       return @"你好"; 40     }; 41     NSString *ret1 = block1(); 42     NSLog(@"%@",ret1); 43      44     //2.有一个参数,参数为基本类型 45     NSString *(^block2)(int); 46     block2 = ^(int age){ 47         return [NSString stringWithFormat:@"你今年%d岁",age]; 48     }; 49     NSString *ret2 = block2(10); 50     NSLog(@"%@",ret2); 51      52     //3.有一个参数,参数为对象类型 53     NSString *(^block3)(NSString *); 54     block3 = ^(NSString *name){ 55         return name; 56     }; 57     NSString *ret3 = block3(@"小明"); 58     NSLog(@"%@",ret3); 59      60     //4.有两个参数,参数都是对象类型 61     NSString *(^block4)(NSString *,NSString *); 62     block4 = ^(NSString *name1,NSString *name2){ 63         return [NSString stringWithFormat:@"%@,%@",name1,name2]; 64     }; 65     NSString *ret4 = block4(@"小明",@"小花"); 66     NSLog(@"%@",ret4); 67 } 68 //有返回值,返回值为基本类型 69 -(void)testIntReturnValue 70 { 71     //1.没有参数 72     int (^block1)(void); 73     block1 = ^{ 74         return 200; 75     }; 76     //使用 77     int ret1 = block1(); 78     NSLog(@"%d",ret1); 79      80     //2.有一个参数 81     int (^block2)(int); 82     block2 = ^(int age){ 83         return age; 84     }; 85     //使用 86     int ret2 = block2(50); 87     NSLog(@"%i",ret2); 88      89     //3.有一个参数,参数为对象类型 90     int (^block3)(NSString *); 91     block3 = ^(NSString *name){ 92         return (int)name.length; 93     }; 94     int ret3 = block3(@"hello world"); 95     NSLog(@"%d",ret3); 96      97     //4.有两个参数,两个对象类型 98     int (^block4)(NSString *,NSString *); 99     block4 = ^(NSString *name1,NSString *name2){100         return (int)(name1.length+name2.length);101     };102     int ret4 = block4(@"hello",@"world");103     NSLog(@"%i",ret4);104 }105 106 //没有返回值的107 -(void)testNoReturnValue108 {109     //1.没有参数110     //声明111     void (^block1)(void);112     //赋值113     block1 = ^{114         NSLog(@"void");115     };116     //使用117     block1();118     119     //2.没有返回值参数是基本类型120     //声明时的形参可以和赋值时不一样121     void (^block2)(int pa);122     //赋值123     block2 = ^(int param){124         NSLog(@"param = %d",param);125     };126     //使用127     block2(100);128     129     //3.有一个参数,参数是对象类型(NSString)130     //声明131     void (^block3)(NSString *);132     //赋值133     block3 = ^(NSString *name){134         NSLog(@"name = %@",name);135     };136     //使用137     block3(@"小明");138     139     //4.有两个参数,一个基本类型,一个对象类型140     void (^block4)(int,NSString *);141     block4 = ^(int age,NSString *name){142         NSLog(@"%@今年%d岁",name,age);143     };144     //使用145     block4(20,@"小明");146 }147 148 - (void)didReceiveMemoryWarning {149     [super didReceiveMemoryWarning];150     // Dispose of any resources that can be recreated.151 }152 153 @end

 

转载于:https://www.cnblogs.com/liaods/p/4788919.html

你可能感兴趣的文章
maven 学习之路之二(1)
查看>>
爬虫第二课:解析网页中的元素
查看>>
域名注册必须实名认证 《互联网域名管理办法》11月1日实施
查看>>
Convert a byte[] array to readable string format. This makes the "hex" readable!
查看>>
记录一下学习过程中,比较好的文章
查看>>
python之Django学习笔记(一)---搭建Django开发环境和一些基本命令
查看>>
【搜索入门专题练习1】hdu1241+hdu1312 C+D【DFS】
查看>>
ADO 输入输出文本及获取指定字符串
查看>>
.Net MVC 前台验证跟后台验证
查看>>
scrollerview中使用viewpager嵌套fragmentment 滚动事件冲突解决
查看>>
maven 和 Maven的配置
查看>>
Jenkins配置备份恢复插件ThinBackup
查看>>
Dockerfile 构建前端node应用cnpm命令启动nodejs服务
查看>>
OpenWRT中的按键和灯的GPIO控制实现_转
查看>>
进度管理中的常见问题
查看>>
POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE
查看>>
linux运行级别
查看>>
工资调整
查看>>
记:Android 安装apk的代码实现
查看>>
xml弹出框js备份
查看>>