Swift1.2与Xcode6.3 beta
Xcode6.3和Swift1.2都已经发布。这次发布增强了Swift编译器也给Swift增加了一些新的特性。详细内容可以看这里。这里主要关注比较重要的内容。 编译器的改进 Swift1.2的编译器更加的稳定,各方面性能都有所提升。这些改进让使用Swift开发体验更好。某些可见的更新包括:
新的语言特性 Swift1.2有更好的安全和可预见行为。Swift和Objective-C交互也改进。主要改进如下:
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?。
@objc enum Bear: Int { case Black,Grizzly,Polar } 导入OC后为: typedef NS_ENUM(NSInteger,Bear) {
BearBlack,BearGrizzly,BearPolar
};
let x: SomeThing if condition { x = foo() } else { x = bar() } use(x)
if let a = foo(),b = bar() where a < b,let c = baz() { }
结论 Swift1.2无论在语言上还是在相关的工具上都是迈出了很大一步。当然这些变化中也包含了一些代码不兼容的内容。所以在Xcode6.3中包含了一个迁移器来自动完成代码迁移。可以打开Xcode->Edit->Converter ->To Swift 1.2来使用迁移器。
参考:https://developer.apple.com/swift/blog/?id=22 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |