Swift1.2与Xcode6.3 beta

Xcode6.3和Swift1.2都已经发布。这次发布增强了Swift编译器也给Swift增加了一些新的特性。详细内容可以看这里。这里主要关注比较重要的内容。

编译器的改进

Swift1.2的编译器更加的稳定,各方面性能都有所提升。这些改进让使用Swift开发体验更好。某些可见的更新包括:

  • 增量编译-没有修改的文件默认情况下不会再编译。这会大幅提升编译时间。大范围的代码调整还是会引发多文件的重新编译。
  • 更快速的可执行文件-debug模式下生成的二进制文件将显著提升运行速度。新的优化也会提升release模式下生成的二进制文件的性能。
  • 更好的编译诊断-更好的错误和警告信息,更好的“fix-it”提示。这些都会帮助你写出更好的Swift1.2代码。
  • 更加稳定-常见的编译器崩溃已经修正。你也不会经常看到SourceKit警告了。

新的语言特性

Swift1.2有更好的安全和可预见行为。Swift和Objective-C交互也改进。主要改进如下:

  • as!类型转换符-类型转换在运行时是可能失败的。现在用as!操作符,让读代码的或者代码的维护者更加清楚的知道潜在的运行时转换失败。

Objective-C增加了可空标记-新的Objective-C标记允许你在头文件中标记指针或者block是否可空。当你混合使用OC和Swift的时候,你可以写出和Swift融合更好的OC代码。如:

-(void)registerNib:(nonnull UINib *)nib forCellReuseIdentifier:(nonnull NSString *)identifier;
-(nullable UITableViewCell *)cellForRowAtIndexPath:(nonnull NSIndexPath)indexPath;
@property (nonatomic, readwrite, retain, nullable) UIView *backgroundView;

在Swift中会变成:

func registerNib(nib: UINib, forCellReuseIdentifier identifier: String)
func cellForRowAtIndexPath(indexPath: NSIndexPath) -> UITableViewCell?
var backgroundView: UIView?

以前一般会作为implicitly-unwrapped optionals 隐式解析可选(如,UINib!) 方式引入Swift代码中。现在有了可空标记,nonnull标记的将不再使用感叹号操作符。nullable标记的会作为optional类型,如上面的UITableViewCell返回值引入Swift后成为UITableViewCell?

  • Swift枚举可以使用@objc属性暴露给Objective-C-比如下面的代码:
@objc enum Bear: Int {
    case Black, Grizzly, Polar
}

导入OC后为:

typedef NS_ENUM(NSInteger, Bear) {
    BearBlack, BearGrizzly, BearPolar
};
  • let常量更加强大、一致:let常量不再要求立即初始化。新规则是一个let常量必须在使用前初始化,而且只可以被初始化。不能重新复制或者改变。所以let表达式可以写成这样:
let x: SomeThing
           if condition {
             x = foo()
           } else {
x = bar() }
use(x)
  • 更加强大的if let可选解析-if let一次可以解析多个optional。同时可以包含bool条件。这样可以有效的避免无效的嵌套。如:
if let a = foo(), b = bar() where a < b,
              let c = baz() {
}
  • 新的本地数据结构Set-一个无序、唯一数据集类型Set,对应于OC的NSSet。

结论

Swift1.2无论在语言上还是在相关的工具上都是迈出了很大一步。当然这些变化中也包含了一些代码不兼容的内容。所以在Xcode6.3中包含了一个迁移器来自动完成代码迁移。可以打开Xcode->Edit->Converter ->To Swift 1.2来使用迁移器。

参考:https://developer.apple.com/swift/blog/?id=22

时间: 2024-10-11 03:28:57

Swift1.2与Xcode6.3 beta的相关文章

Xcode6中修改项目名称

虽说项目名称一旦确立一般不会动, 但是难保有一天就会出现这个需求,恰好今天遇到这个问题,特整理出来. 环境 mac 10.10    Xcode6.2 beta 1.想好名称(废话,但是如果是中文的话...) 如果是新手,特别注意,中文名称会被识别成 - 比如,  运护士会被识别成  --- ,这个有什么危害呢? 就是如果两个应用是字数相同的中文时候,会发生覆盖 .个中滋味,自己体会 . 还有,如果是 --- 的形式,我觉得你申请不下来推送证书(因为 apple 的推送证书必须是对唯一的应用的,

Swift 版本历史记录(关注)

http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/chapter1/03_revision_history.html 本页内容包括: XCode6.2 Beta3 Swift语法文档更新 XCode6.2 Beta2 Swift语法文档更新 XCode6.2 Beta1 Swift语法文档更新 XCode6.1.1 Swift语法文档更新 XCode6.1 Swift语法文档更新 XCode6.1 Beta2

ios版本与xcode版本

iOS版本 iPhone版本 Xcode版本 其他 2003年 Xcode1.0 2005年4月29日 Xcode2.0 2007年1月9日 iPhone OS(iOS1): 虚拟键盘.谷歌地图 第一代iPhone:3.5英寸,触屏 谷歌研发安卓 2007年6月29日 iPhone2G 2007年10月26日 Xcode3.0 2008年7月11日 iOS2: 同步服务.云计算电子邮件.AppStore面世.GPS导航 iPhone 3G:支持3G.AppStore 同年,首款安卓手机T-Mob

iOS版本、iPhone版本、Xcode版本比对

iOS版本 iPhone版本 Xcode版本 其他 2003年 Xcode1.0 2005年4月29日 Xcode2.0 2007年1月9日 iPhone OS(iOS1): 虚拟键盘.谷歌地图 第一代iPhone:3.5英寸,触屏 谷歌研发安卓 2007年6月29日 iPhone2G 2007年10月26日 Xcode3.0 2008年7月11日 iOS2: 同步服务.云计算电子邮件.AppStore面世.GPS导航 iPhone 3G:支持3G.AppStore 同年,首款安卓手机T-Mob

苹果WatchKit轻松入门

背景 前段时间苹果Apple推出 WatchKit,用于开发Apple Watch应用,同时也推出了 Xcode6.2 Beta(非稳定版,好期待稳定版)版本用于开发 Watch App.Apple Watch是苹果在智能穿戴领域的一个尝试,对于苹果和开发者都非常具有挑战.学会开发 WatchApp 将大幅度提高自己的竞争能力. 内容提要: 1.初识WatchKit 2.安装Xcode 6.2 Beta 3.iOS工程添加WatchKit支持 4.WatchKit项目结构和UI控件 5.主界面

iOS: El Capitan Beta 下 Xcode6.4 不显示Scheme菜单

当我用El Capitan Beta 下 Xcode6.4版本时候出现了问题 常用的Scheme 选择版本不见了 而在Xcode 7.0 beta 6中显示有 简直就是坑,经过查资料其实是一个bug ,可以在product-->destination 下选择 参考资料:http://stackoverflow.com/questions/32276768/xcode-6-4-scheme-option-disappeared-in-el-capitan-beta

安装xcode6 beta 后调试出现Unable to boot the iOS Simulator以及编译苹果官方Swift的demo报错failed with exit code 1的解决的方法

苹果昨天公布新语言Swift(雨燕),须要安装xcode6 以及mac os 系统为10.9以上. (xcode6 beta 可在官方下载.须要登录开发人员账号:mac os 系统直接更新就可以.在此就不详细说明了) 在安装完成后,打开xcode6,新建一个项目,编译正常,但执行却出错.模拟器无法正常启动(黑屏),xcode弹出Unable to boot the iOS Simulator. 重装xcode6.重新启动后依然报错. 后来在苹果官方下载专门演示swift的demo,编译时出错:

xcode6 beta 中智能提示(自动完成)功能有时不显示的问题

xcode6 beta 中智能提示(自动完成)功能有时不显示的问题      周银辉 xcode6 beta 中智能提示(自动完成)功能有时不显示,这让人很郁闷啊,网上老外的视频中看人家用的好好的. 原来是一个bug,解决方案是:把代码文件中的中文字符全部删掉. xcode6 beta 中智能提示(自动完成)功能有时不显示的问题

iOS: XCode6 beta 6 错误

在使用XCode6 Beta6时, 遇到"__TFSs15_arrayForceCastU___FGSaQ__GSaQ0__"错误: 在http://stackoverflow.com/questions/25373437/suddenly-getting-compiler-crash-arrayforcecast-in-swift-xcode-beta-6中有解决方法, 我用选择 Product 菜单, 按住 option 键, Clean Build Folder...的方法解决了