首页 > 代码库 > 在Coxoa和Objextive-C中使用Swift(1)Basic Setup

在Coxoa和Objextive-C中使用Swift(1)Basic Setup

在Coxoa和Objextive-C中使用Swift(Using Swift with Cocoa and Objective-C)
开始-》基本设置
说明:这是一个针对API和开发技术的初步文件。苹果公司提供了这个文档帮助您选择合适技术和编程接口,来构建苹果品牌产品。这个信息使随时变化的,软件实施要根据本文在最终的操作系统软件和最终文件进行测试。本文档的较新版本可能提供关于新的API或技术的细节。

Swift的设计提供了对Cocoa和Objective-c的无缝兼容。你可以在Swift中使用Objective-C 的API接口(包括系统框架和你的自定义代码),你还可以在Objective-C代码中使用Swift API接口。这种兼容性使Swift变的简单、方便,强大的工具是你的app开发过程得心应手。

本文主要讲述如下三个重要的方面,这些都是你在开发APP时可以利用的优势。
    a.互操作性(Interoperability)让你的Swift代码和Objective-C代码相互操作,你可以在Objective-C代码中使用Swift的类,也可以在编写Swift代码时使用熟悉的Cocoa的相关类、模版、惯例
    b.混合(mix)和匹配(match)允许你创建混合语言的App,可以同时包含Swift文件和Objective-C文件,并能相互调用。
    c.迁移(Migration) 从已经存在的Objective-C代码迁移到Swift时非常容易的。Swift互操作性和混合匹配的特性,你可以很把Objective-C App 的一部分代码替换为Swift特性

在你开始学习这些特性之前,你首先要知道如何在你的Cocoa系统中安装Swift开发环境


安装你的Swift开发环境

我们开始尝试在Swift中访问Cocoa框架,从Xcode模版中创建一个基于Swift的app

从Xcode中创建Swift项目
    1.选择File > New > Project > (iOS or OS X) > Application > 选择你要创建的模版。
    2.在弹出的对话框中的Language下拉列表中选择Swift。
一个Swift项目结构和Objective-C的项目几乎相同,除了一处重要的区别:Swift项目没有头文件,接口和实现之间没有清晰的分界,所以一个类的所有特定信息都包含在一个特定的.swift文件中。
现在,你可以开始尝试在AppDelegate中填写代码了;你也可以通过选择File > New > File > (iOS or OS X) > Other > Swift 创建新的Swift类文件。


理解Swift引入(import)的过程
当你完成Xcode项目设置,你可以Cocoa平台引入任何框架然后开始使用Objective-C和Swift工作了。
任何的Objective-C框架(或c的链接库)都是可以作为组建引入到Swift中来使用的。这里包括了所有的Objective-C系统库(概括UIKit、Foundation和SpriteKit)和系统支持的普通的C库。例如引入Foundation框架,简单的在Swift文件顶部加入import声明就可以了
//swift代码
import Foundation

这条引用使所有的Fundation的API可以直接在Swift中使用,包括NSDate, NSURL, NSMutableData以及他们的方法。

引入的过程是十分简单明了的。Objective-C把开放的API都放在头文件中,而在Swift中,这些头文件被便一道Objective-C的模块中,然后导入到Swift中作为Swift的API。引入(import)决定了哪些Objective-C声明的函数、类、方法和类型出现在Swift中。对于函数和方法,这个过程会影响变量的类型和返回值。对于类型,importing的过程会做这些事
    a.把Object-C中的一些类型转换为Swift中的等价类型,比如id变为AnyPbject
    b.把Object-C中的核心类型转换为Swift中的替换类型,比如NSSting变成String
    c.把Object-C中的概念转换为Swift中的对应概念,比如 pointers 替换为 optionals

在互操作性(Interoperability)中你会学到更多这样的映射,并且学会如何把这转换运用到你的Swift代码中。

把一个Swift模块引入到Objective-C中的过程是和Swoft引入Objective-C相似的。Swift把他的API作为一个Swift模块,并为其生成对应的头文件。这些头文件开放了API被映射到Objective-C语言。一些 Swift APIs 不能映射到Objective-C,因为他的一些语言特性不能在Objective-C中使用。在Objective-C中使用Swift的更多信息,请看 “Swift and Objective-C in the Same Project”.

原文:Using Swift with Cocoa and Objective-C