这是一个正在研发的API或技术的概要文件,苹果公司提供这些信息主要是为了帮助你通过苹果产品使用这些技术或者编程接口而做好计划,该信息有可能会在未来发生改变,本文当中提到的软件应该以最终发布的操作系统测试和最终文档为准,未来有可能会提供新版本的文档信息。

Swift 被设计用来无缝兼容 Cocoa 和 Objective-C 。在 Swift 中,你可以使用 Objective-C 的 API(包括系统框架和你自定义的代码),你也可以在 Objective-C中 使用 Swift 的 API。这种兼容性使 Swift 变成了一个简单、方便并且强大的工具集成到你的 Cocoa 应用开发工作流程中。

这篇指南包括了三个有关兼容性的重要方面方便你更好地利用来开发 Cocoa 应用:

  • 互用性 使你将 Swift 和 Objective-C 相接合,允许在 Objective-C 中使用 Swift 的 Class 并且当你在写 Swift 代码时利用熟悉的 Cocoa Class、Pattern、Practice。

  • 混合和匹配 允许你创建结合了 Swift 和 Objective-C 文件的混合语言应用,他们能跟彼此进行通信。

  • 迁移 由于以上两点,从已经存在的 Objective-C 代码迁移到 Swift 是非常简单的,使得用最新的 Swift 特性代替你的 Objective-C 应用部分内容成为了可能。

在你开始学习这些特性前,你需要对如何建立 Swift 环境来访问 Cocoa 系统框架有个大体了解。

建立你的 Swift 环境

为了开始体验在 Swift 中访问 Cocoa 框架,使用 Xcode 的一个模板来创建一个基于 Swift 应用。

在 Xcode 中创建一个 Swift 项目

1.选择 File > New > Project > (iOS or OS X) > Application > your template of choice。

2.点击 Language 弹出菜单并选择 Swift。

Swift 项目的结构几乎和 Objective-C 项目一模一样,只有一个重要的区别:Swift 没有头文件。在实现和接口之间没有显示的划分,所以一个特定类中的所有信息都存储在单独的.swift文件中。

现在开始,你可以开始体验在app delegate中写 Swift 代码,或者你可以通过选择 File > New > File > (iOS or OS X) > Other > Swift来创建一个 Swift 类。

理解 Swift 导入过程

在你建立 Xcode 项目后,你可以在 Swift 里导入任意用 Objective-C 来工作的 Cocoa 平台框架。

任意 Objective-C 的框架(或 C 类库)将作为一个module,能直接导入到 Swift 中。这些包括了所有 Objective-C 系统框架-比如 Foundation、UIKit 和 SpriteKit,就像系统支持公共 C 类库。举个例子,想导入 Foundation,只要简单地添加 import 语句到你写的 Swift 文件的顶部。

SWIFT

import Foundation

这个 import 导入了所有 Foundation 的 API,包括NSDate,NSURL,NSMutableData,并且他们的所有方法、属性和类别都可以在 Swift 中直接使用。

导入过程是非常简洁的。Objective-C 框架在头文件中申明 API。在 Swift 中,那些头文件被编译成 Objective-C 的 module,接着被导入到 Swift 作为 Swift 的 API。导入决定了 Objective-C 的 Function,Class,Method 和 Type 如何在 Swift 中出现。对于 Function 和 Method,这个过程影响他们的参数和返回值。导入过程可以做下面这些事情:

  • 重映射确定的 Objective-C 类型到 Swift 中的同等类型,就像 id 到AnyObject

  • 重映射确定的 Objective-C 核心类型到 Swift 中的替代类型, 就像NSString到String

  • 重映射确定的 Objective-C 概念到 Swift 中相匹配的概念,如pointers到optionals

在互用性章节,你将会了解到更多关于这些映射如何在你的 Swift 代码进行取舍。 导入 Swift 的模型到 Objective-C 和从 Objective-C 导入 Swift 是非常相似的。Swift 申明它的 API,比如一个框架作为 Swift modules。同时这些 Swift modules 会生成 Objective-C 的头文件。这些头文件可以映射回 Objective-C 的 API 中。一些 Swift 的 API 不映射回 Objective-C 因为他们取舍了语言特性发现这些在 Objective-C 中不可用。关于在 Objective-C 中使用 Swift 的更多特性,请参看在同一项目中使用 Swift 和 Objective-C。

注意:你不能直接把 C++ 代码导入 Swift。解决办法是为 C++ 代码创建一个 Objective-C 或者 C 的封装。

Using Swift with Cocoa and Objective-C(Swift 2.0版):开始--基础设置-备相关推荐

  1. [Swift A] - Using Swift with Cocoa and Objective-C--Mix and Match

    Swift与Objective-C的兼容能力允许你在同一个工程中同时使用两种语言.你可以用这种叫做"mix and match"的特性来开发基于混合语言的应用.使用Swfit的最新 ...

  2. Swift vs. Objective-C:未来看好Swift的十个理由

    是时候使用易入手又全面的 Swif 语言为 iOS 和 mac OS X 做应用开发了. 虽然编程语言不会那么容易消逝,但坚持衰落范例的开发小组正在这么做.如果你正为移动设备开发应用程序,并且你还没有 ...

  3. 【绝对干货】Swift是花拳绣腿吗?从Swift谈开发语言与程序员的职业发展

    Swift是一种新的编程语言,用于编写 iOS 和 OS X 应用.Swift 结合了 C 和 Objective-C 的优点并且不受C兼容性的限制.Swift 采用安全的编程模式并添加了很多新特性, ...

  4. 拥抱Swift!优酷Mac迁移Swift实践

    作者丨阿里文娱高级无线开发工程师 大斗 不管从"明里"还是"暗里"来看,苹果都在大力推荐使用 Swift 这一门语言.作为苹果的"亲儿子", ...

  5. Flutter有局限,拥抱Swift!优酷Mac迁移Swift实践

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨阿里文娱高级无线开发工程师 大斗 来源 | I ...

  6. Swift互用性:采用Cocoa设计模式(Swift 2.0版)-b

    本页包含内容: 委托(Delegation) 错误处理(Error Handling) 键值观察(Key-Value Observing) Target-Action模式(Target-Action) ...

  7. swift 富文本编辑_如何使用Swift构建协作式文本编辑器

    swift 富文本编辑 by Neo Ighodaro 由新Ighodaro 如何使用Swift构建协作式文本编辑器 (How to build a collaborative text editor ...

  8. swift python混合开发_引用swift项目

    iOS - OC 与 Swift 互相操作 前言 在 Swift 语言中,我们可以使用 Objective-C.C 语言编写代码,我们可以导入任意用 Objective-C 写的 Cocoa 平台框架 ...

  9. swift笔记——环境搭建及Hello,Swift!

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/enson16855/article/details/29829601 首先要下载XCode6.仅仅有 ...

最新文章

  1. [云炬创业管理笔记]第三章打造优秀创业团队讨论1
  2. 「协方差」与「相关系数」的概念
  3. 设计模式学习(三)——单例模式
  4. robot:根据条件主动判定用例失败或者通过
  5. halcon学习资料
  6. openmv自然光下寻找激光点
  7. 硬盘坏道修复软件测试工程师,硬盘坏道检测,教您如何修复硬盘坏道
  8. mui框架从0到1【webapp开发教程】
  9. Context-Aware Patch Generation for Better Automated Program Repair -上下文感知补丁生成更好的自动化程序修复
  10. Linux vi编辑保存退出时错误E45:‘readonly‘ optionisset(add ...)
  11. Visio 画流图 程序流图 斜线
  12. 基于阿里云的双活灾备方案的设计
  13. c语言————开辟动态内存空间
  14. 湄洲岛风光-鹅尾神石园
  15. 张良、萧何与韩信:汉初三杰悲情录[转]
  16. 怎么算程序框图的计算机程序,算法与程序框图导学案
  17. k8s集群部署springboot项目
  18. 网络变压器工厂:了解POE POE+ 网络变压器(网络隔离滤波器)
  19. JUST技术:JUST高效时空索引揭秘及使用指南
  20. 「GoCN酷Go推荐」Cloudreve 公私兼备的网盘系统

热门文章

  1. 10位photoshop顶尖设计大师
  2. ASP.NET页面刷新的实现方法
  3. Linux+Apache+Mysql+PHP典型配置
  4. 带参数的插入语句的问题
  5. JAVA集合(四、ConcurrentHashMap)
  6. 2017年7月9 号小计
  7. 人脸检测三个算法比较
  8. PHP读取TXT中文乱码的解决方法
  9. Vc6.0 调试指南 --Happy Debugging
  10. 随想录(编写简单资源管理代码)