- <p style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 26px; color: rgb(73, 73, 73); font-size: 14px; text-align: left; font-family: Arial; "></p><pre name="code" class="plain"></pre><pre name="code" class="java"> /*
- 在代码快打印数字
- */
- 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);</pre>
- <pre></pre>
- <pre name="code" class="java">参考这个博客:</pre><pre name="code" class="java">http://blog.sina.com.cn/s/blog_71715bf8010166ux.html
- </pre>
IOS开发之----代码块的使用
最新推荐文章于 2015-05-24 12:50:57 发布