typedef int
(^MyBlock) (int, int);
//MyBlock就是这个Block的别名
void test() {
// 定义了一个block,这个block返回值是int类型,接收两个int类型的参数
int (^block) (int,
int) = ^(int
a, int b) {
return a +
b;
};
int a = block(10
,11);
NSLog(@"a
= %d", a);
}
void test2() {
// __block有2个下划线
__block int
c = 15;
// 声明了一个block变量
MyBlock sum = ^(int a,
int b) {
// 如果外部的变量用了__block关键字,就可以在block内部修改这个变量
c = 19;
// block可以访问外面定义的变量
NSLog(@"c = %d", c);
return a +
b;
};
NSLog(@"%d",
sum(10, 10));
}
#import
<Foundation/Foundation.h>
int sum(int
a, int b) {
return a + b;
}
void test() {
int (^Sum) (int,
int) = ^(int
a, int b) {
return a +
b;
};
// block
int c = Sum(10,
9);
NSLog(@"%d",
c);
// 函数
c = sum(10,
10);
NSLog(@"%d",
c);
int (*sump) (int,
int) = sum;
c = (*sump)(9, 9);
NSLog(@"%d",
c);
}
typedef char
* String;
void test1() {
// 定义了Sum这种Block类型
typedef int
(^Sum) (int, int);
// 定义了sump这种指针类型,这种指针是指向函数的
typedef int
(*Sump) (int, int);
// 定义了一个block变量
Sum sum1 = ^(int
a, int b) {
return a +
b;
};
int c = sum1(10,
10);
NSLog(@"%i",
c);
// 定义一个指针变量p指向sum函数
Sump p = sum;
// c = (*p)(9, 8);
c = p(9, 8);
NSLog(@"%i",
c);
}
int main(int
argc, const char
* argv[])
{
@autoreleasepool
{
test1();
}
return 0;
}