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)testNoReturnValue
108 {
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