这是一个正在研发的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互用性:与 Cocoa 数据类型共舞(Swift 2.0版)-b

    本节内容包括: 字符串(Strings) 数值(Numbers) 集合类(Collection Classes) 错误(Errors) Foundation数据类型(Foundation Data T ...

  2. Using Swift with Cocoa and Objective-C--在同个project中使用Swift和在同个project中

    http://www.cocoachina.com/newbie/basic/2014/0605/8688.html watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5u ...

  3. Using Swift with Cocoa and Objective-C下载

    <Using Swift with Cocoa and Objective-C Building App > 下载地址 http://download.csdn.net/detail/sw ...

  4. Objective C & Swift & iOS & App

    Objective C & Swift & iOS & App https://www.runoob.com/ios/ios-objective-c.html https:// ...

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

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

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

    Swift vs. Objective-C:未来看好 Swift 的十个理由 是时候使用易入手又全面的Swif语言为iOS和mac OS X做应用开发了. 虽然编程语言不会那么容易消逝,但坚持衰落范例 ...

  7. iOS 里面 Swift与Objective-C混编,Swift与C++混编的一些比较

        即使你尽量用Swift编写iOS程序,难免会遇到部分算法是用C++语言编写的.那你只能去问问”度娘“或“狗哥”怎么用Swift调用C++算法.   一,C,C++, Objective-C,S ...

  8. Swift中文教程(一)--欢迎来到Swift的世界

    原文:Swift中文教程(一)--欢迎来到Swift的世界 Apple凌晨时在WWDC发布了Swift编程语言,语法简介我很喜欢,市面上没有完整的中文教程,我在ibooks里面下载了英文原版,现在开始 ...

  9. 窥探Swift系列博客说明及其Swift版本间更新

    Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...

随机推荐

  1. B - Frogger

    题目大意: 一个叫做弗雷迪的青蛙坐在湖中间的一块石头上.突然他注意到他的青蛙女神菲奥娜坐在另一块石头上面,于是他计划去看她,但是呢湖里面的水很脏并且充满了游客的防晒霜,所以他想避免游泳而采用跳跃的方式 ...

  2. Linux下设置允许myql数据库远程连接

    系统环境: Linux ubuntu --generic #-Ubuntu SMP Thu Apr :: UTC x86_64 x86_64 x86_64 GNU/Linux 系统中已经安装好mysq ...

  3. javaweb笔记4之httpservlet

    1 httpservlet简介 service方法是Servlet的入口方法,调用servlet会首先调用service方法.在service方法中,会根据请求方式分别调用不同的doXXX方法.例如, ...

  4. 用于A*的 二叉堆 AS3实现

    package com.copper.isometric.pathing {     import flash.sampler.startSampling;           /**      * ...

  5. 关于Form窗体的StartPosition 属性如何设置的问题

    1.让窗体在启动时在指定位置出现 form1.StartPosition Manual CenterScreen WindowsDefaultLocation (default) WindowsDef ...

  6. [Angular 2] Create a simple search Pipe

    This lesson shows you how to create a component and pass its properties as it updates into a Pipe to ...

  7. [转] Python list、tuple、dict区别

    from: http://www.cnblogs.com/Michael-Kong/archive/2012/07/11/2585840.html Dictionary 是 Python 的内置数据类 ...

  8. IOS内存等信息

    1. 获取IOS APP占用的内存 #import <mach/mach.h> // ... void report_memory(void) { struct task_basic_in ...

  9. php 之 post json 数据

    原文链接 http://www.jb51.net/article/27312.htm 最近用到python 与PHP交互,phthon把json数据post给PHP,但在PHP里面$_post获取不到 ...

  10. android SDK开发 -- TitleBar封装(一)

    假设app的title 统一的都是这种左中右结构的 代码如下 <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...