Swift、Objective-C、Cocoa混合编程设置指南

 更新时间:2014年07月21日 10:55:25   投稿:junjie  
这篇文章主要介绍了Swift、Objective-C、Cocoa混合编程设置指南,需要的朋友可以参考下

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,这个过程影响他们的参数和返回值。导入过程可以做下面这些事情:

1.重映射确定的 Objective-C 类型到 Swift 中的同等类型,就像 id 到AnyObject
2.重映射确定的 Objective-C 核心类型到 Swift 中的替代类型, 就像NSString到String
3.重映射确定的 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

相关文章

  • Swift代码自定义UIView实现示例

    Swift代码自定义UIView实现示例

    这篇文章主要为大家介绍了Swift如何自定义UIView的实现示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步,早日升职加薪
    2021-10-10
  • Swift让输入框跟随键盘弹起避免输入输入法挡住输入框问题

    Swift让输入框跟随键盘弹起避免输入输入法挡住输入框问题

    这篇文章主要介绍了Swift让输入框跟随键盘弹起避免输入输入法挡住输入框问题的完美解决方案,本文分步骤给大家介绍的非常详细,需要的朋友可以参考下
    2016-11-11
  • Flutter iOS开发OC混编Swift动态库和静态库问题填坑

    Flutter iOS开发OC混编Swift动态库和静态库问题填坑

    这篇文章主要为大家介绍了Flutter iOS OC 混编 Swift动态库和静态库问题填坑详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 深入讲解C语言编程中volatile修饰符的作用

    深入讲解C语言编程中volatile修饰符的作用

    这篇文章主要介绍了C语言编程中volatile修饰符的作用,文章深入到内存优化方面进行解析,非常推荐!需要的朋友可以参考下
    2015-11-11
  • swift中AnyObject和Any的介绍与区别详解

    swift中AnyObject和Any的介绍与区别详解

    虽然使用swift开发了一段时间,但是感觉对一些基础的东西了解不是比较透彻,在查询了许多资料以后还是打算自己动手记录一下,下面这篇文章主要给大家介绍了关于swift中AnyObject和Any的介绍与区别的相关资料,需要的朋友可以参考下。
    2017-12-12
  • Objective-C中的block与Swift中的尾随闭包使用教程

    Objective-C中的block与Swift中的尾随闭包使用教程

    Block是OC中的闭包,他和swift中的闭包有什么区别呢?下面这篇文章就来给大家介绍关于Objective-C中的block与Swift中的尾随闭包使用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-12-12
  • Swift实现复数计算器

    Swift实现复数计算器

    这篇文章主要为大家详细介绍了Swift实现复数计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 详解Swift语言的while循环结构

    详解Swift语言的while循环结构

    这篇文章主要介绍了Swift语言的while循环结构,包括do...while循环的用法,需要的朋友可以参考下
    2015-11-11
  • Swift中defer关键字推迟执行示例详解

    Swift中defer关键字推迟执行示例详解

    这篇文章主要给大家介绍了关于Swift中defer关键字推迟执行的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • 解析Swift语言面相对象编程中的继承特性

    解析Swift语言面相对象编程中的继承特性

    这篇文章主要介绍了解析Swift语言面相对象编程中的继承特性,是Swift入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11

最新评论