/* 在代码快打印数字 */ 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
IOS开发之----代码块的使用
最新推荐文章于 2024-05-07 18:24:15 发布