- 关于 Swift
- Swift 概览
- 方法
- 基础内容
- 基本运算符
- 字符串和字符
- 集合类型
- 控制流
- 函数
- 闭包
- 枚举
- 类和结构体
- 属性
- 下标
- 继承
- 初始化
- 反初始化
- 自动引用计数
- 可选链
- 错误处理
- 类型转换
- 内嵌类型
- 扩展
- 协议
- 泛型
- 访问控制
- 高级运算符
- 关于语言参考
- 词汇结构
- 类型
- 表达式
- 特性
- Swift 2 中的 String 字符串
- Swift 开发者的 SDK
- App Store 里的 Swift 2 App
- Playground 里的字面量
- Swift 是开源的
- 可交互的 Playground
- Swift 3 和 Xcode 8
- 在 Swift 中使用 JSON
- 在 iPad 上用 Swift Playgrounds 给机器人编程
- Objective-C id 作为 Swift Any
- 版本兼容性
- 内存安全性
- 不透明类型
Swift 开发者的 SDK
在 Xcode 6.3 中,我们曾为 Objective-C 添加了新的 空值标记 语言特性。这个特点给了 Objective-C 语言一个与 Swift 相同的表达空与非空种类的 API 接口。
Xcode 7 通过给 Objective-C 引入轻量泛型模块让 Objective-C 与 Swift 沟通更加自然。泛型允许两个语言安全的沟通和分享保存了特定种类元素的合集。 这些特性对任何写 同时包含 Swift 和 Objective-C 代码的 APP 的人来说都很有用。
但是这里还有一些 Objective-C 开发者每天都在使用的更大的合集代码:组成苹果 SDK 的那些框架。为了提高 Swift 和 Objective-C 的操作体验,我们倾全公司的努力来在我们的 SDK 头提供这个信息。
在 Xcode 7你将会发现几乎所有的常见框架现在都在它们的 API 和合集类型的元素上支持了可空属性。这使得我们的 Swift 接口从这样:
class UIView : UIResponder {
init!(frame: CGRect)
var superview: UIView! { get }
var subviews: [AnyObject]! { get }
var window: UIWindow! { get }
// ...
func isDescendantOfView(view: UIView!) -> Bool
func viewWithTag(tag: Int) -> UIView!
// ...
var constraints: [AnyObject]! { get }
// ...
}
变成这样:
class UIView : UIResponder {
init(frame: CGRect)
var superview: UIView? { get }
var subviews: [UIView] { get }
var window: UIWindow? { get }
// ...
func isDescendantOfView(view: UIView) -> Bool
func viewWithTag(tag: Int) -> UIView?
// ...
var constraints: [NSLayoutConstraint] { get }
// ...
}
最后一个问题是 Xcode 7 转换你代码到 Swift 2 的工具。这个工具存在于 Xcode 的 Edit 菜单, Convert > To Latest Swift Syntax 。这个工具能把使用 Swift 1.2 编写的项目转换到合适的 Swift 2 版本,还会修改一些必要的配置。这些更改体现在升级的头部信息上。举个栗子,重写一个方法的时候它的参数和返回类型现在更加清晰易读,迁移器会更新你的方法来匹配之。
对于 Objective-C 的改善在 WWDC 的 Swift 和 Objective-C 的交互性 14分30秒处开始。不过这个视频使用 Xcode 6.3 __nullable
语法与 Xcode 7 中更新了的 _Nullable
语法不同。更多关于可空标注的信息,参见博文 空属性和 Objective-C 。对于 Swift 2 和 Objective-C 的轻量泛型,移步 Xcode 7 发布注释 来了解更多。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论