- 浏览: 643984 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lizaochengwen:
网络请求碰到的中文乱码使用encodeURL吧- (NSStr ...
iPhone开发/iPad开发 中文乱码问题 -
hhb19900618:
还是没弄懂怎么解决了中文乱码? 正确代码能重写贴出吗
iPhone开发/iPad开发 中文乱码问题 -
zhengjj_2009:
我的理解是讲ipa文件解压缩之后再重新打包,已经破坏了签名,所 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
zhengjj_2009:
我参考你的“ 从ipa格式的母包生成其它渠道包的shell脚本 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
同一片天空:
问题果然解决了
iOS 搭建 XMPP实现环境
Ios4已经直接支持blocks,很有必要学习一下。
在ios,blocks是对象,它封装了一段代码,这段代码可以在任何时候执行。Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:blocks是inline的,并且它对局部变量是只读的。
原文:http://www.cnblogs.com/scorpiozj/archive/2011/01/21/1941008.html
在ios,blocks是对象,它封装了一段代码,这段代码可以在任何时候执行。Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:blocks是inline的,并且它对局部变量是只读的。
Blocks的定义: int (^Multiply)(int, int) = ^(int num1, int num2) {return num1 * num2;}; 定义了一个Multiply的blocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现,注意{}blocks体里的;。 Blocks可以访问局部变量,但是不能修改。 int multiplier = 7; int (^myBlock)(int) = ^(int num) { multiplier ++;//编译报错 return num * multiplier; }; 如果要修改就要加关键字:__block __block int multiplier = 7; int (^myBlock)(int) = ^(int num) { multiplier ++;//这样就可以了 return num * multiplier; }; 作为函数的参数,blocks某种意义上替代了回调函数或者delegate。当函数调用了,假设某个事件触发,这时blocks里的内容就会运行。这样有利于代码的整合和阅读,你不需要到处去实现委托方法了。 系统API中已经有很多支持blocks参数了 · Completion handlers · Notification handlers · Error handlers · Enumeration · View animation and transitions · Sorting 例如: [UIView animateWithDuration:(NSTimeInterval)duration animations:(void (^)())animations] 集合体中也可以运用blocks。枚举一个数组时我们通常: for (id obj in Array); 现在, NSString *area = @"Europe"; NSArray *timeZoneNames = [NSTimeZone knownTimeZoneNames]; NSMutableArray *areaArray = [NSMutableArray arrayWithCapacity:1]; NSIndexSet *areaIndexes = [timeZoneNames indexesOfObjectsWithOptions:NSEnumerationConcurrent passingTest:^(id obj, NSUInteger idx, BOOL *stop) { NSString *tmpStr = (NSString *)obj; return [tmpStr hasPrefix:area]; }]; NSArray *tmpArray = [timeZoneNames objectsAtIndexes:areaIndexes]; [tmpArray enumerateObjectsWithOptions:NSEnumerationConcurrent|NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [areaArray addObject:[obj substringFromIndex:[area length]+1]]; }]; NSLog(@"Cities in %@ time zone:%@", area, areaArray); 在blocks中obj就是数组中的每个成员,我们就可以在blocks内对每个对象进行处理。再比如: NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"a",@"b",@"abc",nil]; NSMutableArray *mArrayCount = [NSMutableArray arrayWithCapacity:1]; [mArray enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock: ^(id obj,NSUInteger idx, BOOL *stop) { [mArrayCount addObject:[NSNumber numberWithInt:[obj length]]]; }]; NSLog(@"%@",mArrayCount); 你会发现,这样写代码更容易读懂。 最后,看一个排序的例子: NSArray *stringsArray = [NSArray arrayWithObjects: @"string 1", @"String 21", @"string 12", @"String 11", @"String 02", nil]; static NSStringCompareOptions comparisonOptions = NSCaseInsensitiveSearch | NSNumericSearch | NSWidthInsensitiveSearch | NSForcedOrderingSearch; NSLocale *currentLocale = [NSLocale currentLocale]; NSComparator finderSort = ^(id string1, id string2) { NSRange string1Range = NSMakeRange(0, [string1 length]); return [string1 compare:string2 options:comparisonOptions range:string1Range locale:currentLocale]; }; NSLog(@"finderSort: %@", [stringsArray sortedArrayUsingComparator:finderSort]); 结果:finderSort: ( "string 1", "String 02", "String 11", "string 12", "String 21" )
原文:http://www.cnblogs.com/scorpiozj/archive/2011/01/21/1941008.html
发表评论
-
SOCK_STREAM和SOCK_DGRAM
2015-07-23 20:08 1569sock_stream 是有保障的(即能保证数据正确传送到 ... -
SOCKET bind INADDR_LOOPBACK和INADDR_ANY的区别
2015-07-23 19:49 2005今天写程序时候,服务器端启动了,然后客户端总是连接不上,con ... -
htons()
2015-07-23 19:26 533在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺 ... -
使用symbolicatecrash分析crash文件
2015-03-10 11:32 1121原文 http://www.cnblogs.com/ning ... -
程序设计中的计算复用(Computational Reuse)
2015-02-10 10:18 610从斐波那契数列说起 ... -
didReceiveMemoryWarning
2015-02-09 16:11 489IPhone下每个app可用的内存是被限制的,如果一个app使 ... -
iOS开发中怎么响应内存警告
2015-02-09 16:08 607好的应用应该在系统内存警告情况下释放一些可以重新创建的资源。在 ... -
ASIHTTPRequest多次重复请求的问题
2014-12-17 14:34 592在一个车票订购的项目中,点击一次订购,却生成了2次订单,通过抓 ... -
从 CloudKit 看 BaaS 服务的趋势
2014-09-26 11:51 691从 6 月份 WWDC 苹果发布 ... -
ios编程--AVCapture编程理解
2014-09-26 11:03 8730、媒体采集的几个东西。这里所需要明白的是,在这个流程中,这里 ... -
NSURLProtocol
2014-09-25 10:42 7611、http://nshipster.com/nsurlpro ... -
关于iOS8的extension插件
2014-09-25 10:41 1218关于iOS8的extension插件,有兴趣的同学可以参考一下 ... -
【转】ios app在itunesConnect里面的几种状态
2014-08-05 10:34 1091Waiting for Upload (Yellow) Ap ... -
[转]iOS Dev (45) iOS图标与切片处理工具Prepo
2014-02-07 17:02 989iOS Dev (45) iOS图标与切片处理工具Prepo ... -
phoneGap开发IOS,JS调用IOS方法/phoneGap插件开发
2014-01-13 17:49 1208前沿 废话不说phoneGap是什么不多介绍,官方网站: h ... -
如何在IOS平台下搭建PhoneGap开发环境(PhoneGap2.5)
2014-01-13 15:23 701由于在下最近在做基于HTML5的跨平台移植,搭建环境的时候着实 ... -
xcode 4 制作静态库详解
2013-12-20 18:27 484最近在做Apple的IOS开发,有开发静态库的需求,本身IOS ... -
【翻译】ios教程-创建静态库
2013-12-20 18:19 3011作者:shede333 主页:htt ... -
封装自己的控件库:iPhone静态库的应用
2013-12-20 17:03 512由于iPhone 控件的极度匮乏和自定义组件在重用上的限制,在 ... -
iphone:使用NSFileManager取得目录下所有文件(遍历所有文件)
2013-11-18 17:56 826From:http://note.sdo.com/u/xiao ...
相关推荐
很不错的code blocks入门学习文档
这是关于Code::Blocks的一些中文文档,对Code::Blocks感兴趣的童鞋可以下载学习。
这是关于Code::Blocks的一些中文文档,对Code::Blocks感兴趣的童鞋可以下载学习。
这是关于Code::Blocks的一些中文文档,对Code::Blocks感兴趣的童鞋可以下载学习。
C语言开发学习的编辑器 code-blocks汉化包,详细安装教程见博客 https://blog.csdn.net/wz947324/article/details/79812926
这是关于Code::Blocks的一些中文文档,对Code::Blocks感兴趣的童鞋可以下载学习。
Valeriy Vyatkin - Iec 61499 Function Blocks for Embedded and Distributed Control Systems Design-Instrumentation Systems (2011) 学习笔记 IEC 61499 功能块设计 for 嵌入式或分布式控制系统
Misc scale blocks for S7.zip西门子PLC编程实例程序源码下载Misc scale blocks for S7.zip西门子PLC编程实例程序源码下载Misc scale blocks for S7.zip西门子PLC编程实例程序源码下载Misc scale blocks for S7.zip...
自己学习时找的SDK 看英文方便顺便翻译成啦中文..想了解POPFLY的可以看下
实验二的使用数据,仅供学习使用 数据内容包括: nyc_census_blocks nyc_neighborhoods nyc_streets nyc_subway_stations 四种都是导入到PostgreSQL后的不同类型数据表 便于与实验过程搭配学习空间函数。
深度强化学习的调度策略优化算法 https://github.com/xwhan/walk_the_blocks
1、资源内容:基于Gradio Blocks的YOLOv5通用目标检测演示系统(完整源码+说明文档+数据).rar 2、代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 3、适用对象:计算机,电子信息工程、数学等...
加速元学习研究的模块化工具箱 :rocket: MetaBlocks是一个模块化的工具箱,用于研究,实验以及可学习的学习算法基准测试...典型用途我们建议使用pip来安装该库的最新版本: $ pip install meta-blocks # normal install
结合Scratch Blocks强大的功能和设计模式这一经典的编程思想,为初入编程大门的人提供一个易于学习的平台。 通过对Scratch Blocks以及其他Web领域前沿技术的体验与研究,了解行业在可视化、前端存储等领域的发展...
结合Scratch Blocks强大的功能和设计模式这一经典的编程思想,为初入编程大门的人提供一个易于学习的平台。 通过对Scratch Blocks以及其他Web领域前沿技术的体验与研究,了解行业在可视化、前端存储等领域的发展...
Intel® SSE4 - Optimized Function for 4x4 Blocks C. SSE2 - Optimized Function for 8x8 Blocks D. Intel® SSE4 - Optimized Function for 8x8 Blocks E. SSE2 - Optimized Function for 16x16 Blocks F. Intel...
PaddleOCRSharp是基于PaddleOCR的C++代码修改并封装的.NET工具类库,支持文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能。
机器学习简介 Python 回顾 中级 Python 机器学习简介 数据生成和可视化 Python 中的线性代数 第 2 部分:监督学习算法 线性回归 局部加权回归 多元回归 逻辑回归 K-最近邻 朴素贝叶斯 支持向量机 决策树和随机森林 ...
安装开发工具:可以选择使用IDE(集成开发环境)如Visual Studio、Code::Blocks或者Xcode来进行OpenGL的开发。可以根据自己的喜好选择合适的开发工具。 配置编译器:在IDE中配置编译器,确保能够正确编译OpenGL的...