IOS开发之----代码块的使用
2013-01-08 14:44
218 查看
/* 在代码快打印数字 */ 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 开发技巧 ---- Code Snippets代码块的使用
- IOS开发之----代码块的使用
- IOS开发之----代码块的使用(二) [此博文包含图片]
- iOS开发之代码块的使用
- IOS开发之----代码块的使用(二)
- iOS开发中代码块的使用
- IOS开发之—-代码块的使用(二)
- iOS开发-学会使用代码块,提高你的开发效率
- IOS开发之----代码块的使用(二)
- IOS开发之----代码块的使用
- IOS开发之----代码块的使用(一)
- iOS开发中使用算法之冒泡法
- 【iOS开发】GDataXML使用实例
- iOS 开发使用OC的奇淫技巧
- iOS开发 ----- FMDB使用
- IOS开发UI篇--仿射变换(CGAffineTransform)使用小结
- IOS开发之使用Speex格式实现简单的语音聊天功能(一)
- IOS开发之——keychain使用介绍
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!
- iOS海哥开发笔记 (海哥原创,Quartz-2d的简单使用 一)