iOS:新特性二(iOS5.1/xcode4.4)--LLVM4.0
来源:互联网 发布:歼二十 知乎 编辑:程序博客网 时间:2024/05/20 19:48
苹果在WWDC2012大会上介绍了大量Objective-C的新特性。在更新的XCode4.4版本中,这些新特性已经可以使用了。
参考:http://blog.devtang.com/blog/2012/08/05/use-modern-objective-c/
============局部的函数调用不用前向申明============
这虽然是一个挺小的改进,但是很贴心。假如我们在一个源文件中有2个函数:分别名为foo 和 bar,其中foo的定义在bar前面。那如果在foo函数内部直接调用bar,编译器会报警告说找不到函数bar。
而现在,我们可以随意地在源文件中放置函数bar的位置。编译器在找不到bar时,会再源码后面找,如果找到了bar,就不会报错了。
============带有类型的enum============
现在我们可以定义enum是无符号整数还是整数,这样编译器会更加智能的做类型检查。如下所示:
typedef enum TableViewCellType : NSInteger { TableViewCellTypeQueue, TableViewCellTypeNewFans, TableViewCellTypeUserInfo, TableViewCellTypeOrganization, TableViewCellTypeFeedback, TableViewCellTypeRateApp, TableViewCellTypeRecommendation, TableViewCellTypeLogout}TableViewCellType;============默认生成@synthesize代码============
编辑器发现你没有写 @synthesize时,会自动帮你加上这一行。@synthesize XX = _XX。这同时在另一方面,起到了鼓励大家使用以下划线开头的变量名作为成员变量名的作用。
当然,为了向下兼容,如果你的程序里面已经有了 @property 变量对应的 @synthesize 代码时,编辑器就不会自动帮你增加这个代码了。详见《iOS:属性...》。
另外有2种特殊情况下,即使你没有写 @synthesize ,编辑器也不会自动帮你加上,这2种情况是:
1.你同时提供了该property的setter 和 getter方法;
2.你的这个property是 readonly 的,并且你提供了其getter方法。
============遍历元素============
以前:一种是用 for in,另一种是用一个变量来循环取值;
NSArray * lines = ... for (NSString * line in lines) { // ... } for (int i = 0; i < lines.count; ++i) { NSString * s = [lines objectAtIndex:i]; ... }// 如果是字典,遍历的代码就要稍微复杂一点了: NSDictionary * dict = … NSArray * keys = [dict allKeys]; for (NSString * key in keys) { NSString * value = [dict objectForKey:key]; }xcode对于iOS4.0以上的系统,支持用block来遍历元素了。用block来遍历字典可以简化代码的编写,建议大家都使用上这个新特性
[lines enumerateObjectsUsingBlock:^(NSString * obj, NSUInteger idx, BOOL *stop) {}];[_urlArguments enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {}];
- iOS:新特性二(iOS5.1/xcode4.4)--LLVM4.0
- iOS:新特性一(iOS5.1/xcode4.4)--LLVM4.0
- iOS:新特性三(iOS5.0/xcode4.2)--ARC
- iOS: iOS5新特性 ARC
- XCode4.4新特性
- iOS应用开发新手教程:iOS5 UIKit新特性(4)
- ios开发xcode4.4(ios6)的一些新特性
- iOS5的新特性
- iOS5新特性:ARC
- iOS5 UIKit新特性
- iOS5 新API 特性
- iOS5 UIKit新特性
- Storyboard学习要点(iOS5新特性学习之二)
- iOS应用开发新手教程:iOS5 UIKit新特性
- [ios开发ios5新特性之]如何在iOS5中定制用户界面
- Xcode4.4、4.5新特性,LLVM 4.0新语法
- iOS5新特性之Storyboard
- xcode4.2能支持ios5.1sdk
- Linux下EPoll通信模型简析
- UVa273 - Jack Straws(线段相交,floyd_warshall)
- Android蓝牙开发浅析
- 各种语言在线编译器
- 编辑文章 - 博客频道 - CSDN.NET
- iOS:新特性二(iOS5.1/xcode4.4)--LLVM4.0
- ZBar出现_iconv错误
- fzu-1607-Greedy division
- 【安卓篇】Android四大组件介绍及生命周期总结篇
- Selenium+Python自动化测试环境搭建
- 解决intelij/android studio卡顿的问题
- POJ 3026 Borg Maze & UVA 10307 Killing Aliens in Borg Maze(BFS,最小生成树)
- 关于够买RapidSSL SSL证书说明
- 内存组织与访问