Using Swift with Cocoa and Objective-C(Swift 2.0版):开始--基础设置-备
这是一个正在研发的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版):开始--基础设置-备的更多相关文章
- Swift互用性:与 Cocoa 数据类型共舞(Swift 2.0版)-b
本节内容包括: 字符串(Strings) 数值(Numbers) 集合类(Collection Classes) 错误(Errors) Foundation数据类型(Foundation Data T ...
- Using Swift with Cocoa and Objective-C--在同个project中使用Swift和在同个project中
http://www.cocoachina.com/newbie/basic/2014/0605/8688.html watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5u ...
- Using Swift with Cocoa and Objective-C下载
<Using Swift with Cocoa and Objective-C Building App > 下载地址 http://download.csdn.net/detail/sw ...
- Objective C & Swift & iOS & App
Objective C & Swift & iOS & App https://www.runoob.com/ios/ios-objective-c.html https:// ...
- [Swift A] - Using Swift with Cocoa and Objective-C--Mix and Match
Swift与Objective-C的兼容能力允许你在同一个工程中同时使用两种语言.你可以用这种叫做“mix and match”的特性来开发基于混合语言的应用.使用Swfit的最新特性--“mix a ...
- Swift vs. Objective-C:未来看好 Swift 的十个理由
Swift vs. Objective-C:未来看好 Swift 的十个理由 是时候使用易入手又全面的Swif语言为iOS和mac OS X做应用开发了. 虽然编程语言不会那么容易消逝,但坚持衰落范例 ...
- iOS 里面 Swift与Objective-C混编,Swift与C++混编的一些比较
即使你尽量用Swift编写iOS程序,难免会遇到部分算法是用C++语言编写的.那你只能去问问”度娘“或“狗哥”怎么用Swift调用C++算法. 一,C,C++, Objective-C,S ...
- Swift中文教程(一)--欢迎来到Swift的世界
原文:Swift中文教程(一)--欢迎来到Swift的世界 Apple凌晨时在WWDC发布了Swift编程语言,语法简介我很喜欢,市面上没有完整的中文教程,我在ibooks里面下载了英文原版,现在开始 ...
- 窥探Swift系列博客说明及其Swift版本间更新
Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...
随机推荐
- 60秒找到最对的size?为服饰电商提供尺寸匹配解决方案的True Fit获1500万美元融资 | 36氪
60秒找到最对的size?为服饰电商提供尺寸匹配解决方案的True Fit获1500万美元融资 | 36氪 60秒找到最对的size?为服饰电商提供尺寸匹配解决方案的True Fit获1500万美元融 ...
- Java父类子类的对象初始化过程
摘要 Java基本的对象初始化过程,子类的初始化,以及涉及到父类和子类的转化时可能引起混乱的情况. 1. 基本初始化过程: 对于一个简单类的初始化过程是: static 修饰的模块(static变量和 ...
- 用urllib2实现一个下载器的思路
下载器的构造 用urllib2实现下载器时从以下几个层面实现功能和灵活性: handler redirect, cookie, proxy 动作 timeout 构造请求 headers: ua, c ...
- 《Web 前端面试指南》2、JavaScript 的 Bind 函数进阶
使用 Bind() 设置方法中 this 对象 //<button>获取随机的人</button> //<input type="text"> ...
- Event 元标签中的代码提示问题
自定的事件可以利用Event元标签在支持该事件的类里面做绑定,绑定后FlashBuilder会有代码提示,以提示该类支持的事件类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...
- Delphi图像处理 -- RGB与HSL转换
阅读提示: <Delphi图像处理>系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM. <C++图像处理>系列以代码清晰,可读性为主,全部使用C ...
- nvl,空时的推断和取值
nvl NVL的概念 Oracle/PLSQL中的一个函数. 格式为: NVL( string1, replace_with) 功能:假设string1为NULL,则NVL函数返回replace_wi ...
- Android URI简单介绍
就Android平台而言,URI主要分三个部分:scheme, authority and path.当中authority又分为host和port.格式例如以下: scheme://host:por ...
- hook研究结果备忘
hook研究结果: 最近一周时间仔细研究了一下hook,也许不能称之为研究吧.顶多是让别人的思想拿过来抄袭一遍而已,写点结果也算对得起自己的这几天的苦心了. 1,首先从同事旁边听到了hook,然后看的 ...
- 网络环境场景以及模拟工具netem
网络环境场景包括: 延迟(Lag),把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况. 掉包(Drop),随机丢弃一些数据. 节流(Throttle),把一小段时间内的数据拦截下来后再在之后的 ...