iso-block
#import <Foundation/Foundation.h>
void test(void (^block1)())
{
block1();
}
void test2(int (^blk2)(int, int))
{
int sum = blk2(10, 20);
NSLog(@"%d",sum);
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1.指向函数的指针的定义 void (*p)();
void (^block1)();
block1 = ^(void){
NSLog(@"hello world");
};
block1();
int (^blk2)(int, int) = ^(int a, int b)
{
return a+b;
};
int sum = blk2(10, 20);
NSLog(@"%d",sum);
//2.
__block int k = 20;
blk2 = ^(int a, int b)
{
k = 30;
//访问外部变量
return a+b+k;
};
sum = blk2(10, 20);
NSLog(@"%d",sum);
//3.
int m = 10;
blk2 = ^(int a, int b)
{
return a+b+m;
};
m = 20;
sum = blk2(10, 20);
NSLog(@"%d",sum);
//4.
test(
^(void){
NSLog(@"sidjal");
});
m = 30;
test2(^(int a, int b)
{
return a+b+m;
}
);
}
return 0;
}