/*
在代码快打印数字
*/
NSLog(@"----------------resultBlocks---------------------->");
int(^resultBlocks)(int) =^(int num)
{
return num*20;
};
int resultNum = resultBlocks(2);
NSLog(@"result: %4d",resultNum);
NSLog(@"--------------myprintBlock------------------------>");
void(^myprintBlock)(NSString *x)= ^(NSString *str){NSLog(@"@printBlock: %@",str);};
myprintBlock(@"Hello block");
NSLog(@"---------------printNumBlock----------------------->");
/*
在代码快多个参数用 逗号隔开
*/
void(^printNumBlock)(int,int);
printNumBlock = ^(int num,int num2)
{
num = num+num2;
NSLog(@"printNum: %d",num);
};
printNumBlock(10000,1000);
NSLog(@"---------------递归使用----------------------->");
/**
代码快用在递归时候要注意了,要在调用之前初始化好整个代码快,否则会运行错误!
怎么结局错误呢?
1: 用sataic 关键字 使其在真个类初始化之前初始化好
2: 使用 __block 关键字
*/
__block void(^const blocks)(int)=^(int i)
{
if (i > 0) {
NSLog(@"num: %d",i);
blocks(i- 1);
}
};
blocks(4);
static void(^const blocks2)(int)=^(int i)
{
if (i > 0) {
NSLog(@"num: %d",i);
blocks2(i- 1);
}
};
blocks2(4);
NSLog(@"---------------sortArray----------------------->");
/*
在代码快中字符串数组排序
*/
NSArray *stringArray = [NSArray arrayWithObjects:@"abc 1", @"abc 21", @"abc 12",@"abc 13",@"abc 0.5", nil];
NSComparator sortBlcok = ^(id String1, id String2)
{
return [String1 compare:String2];
};
NSArray *sortArray = [stringArray sortedArrayUsingComparator:sortBlcok];
NSArray *sortArray2 = [stringArray sortedArrayUsingComparator:^(id String1, id String2){
return [String1 compare:String2];
}];
NSLog(@"stringArray: %@",stringArray);
NSLog(@"sortArray: %@",sortArray2);
NSLog(@"------changeGlobalBlock--------------------------->");
/*
在代码快中 改变全局部变量编
*/
void(^changeGlobalBlock)(void)=^(void){
global++;
};
changeGlobalBlock();
NSLog(@"changeGlobalBlock: %d ",global);
NSLog(@"------changLocalNumBlock--------------------------->");
/*
在代码快中 改变局部变量编译是通不过的,需要在前面加 __block 关键字,否则会报这样的一个错误
Variable is not assignable(miss_block type specifier
*/
__block int localNum =500;
void(^changLocalNumBlock)(int)= ^(int i){
localNum = localNum+i;
};
changLocalNumBlock(30);
NSLog(@"changLocalNumBlock: %d",localNum);
参考这个博客:
http://blog.sina.com.cn/s/blog_71715bf8010166ux.html