Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍

 更新时间:2014年07月21日 09:07:01   投稿:junjie  
这篇文章主要介绍了Objective-c代码如何移植为Swift代码,Objective-c代码转移到Swift过程介绍,需要的朋友可以参考下

迁移工作正好提供了一个重新审视现有 Objective-C 应用程序的机会,也可以通过 Swift 代码来更好的优化应用程序的体系架构,逻辑以及性能。直接的说,你将用先前学到的 mix and match 以及这两个语言间的互操作性来进行增量迁移工作。Mix-and-match 功能使得选择哪些特性和功能来用 Swift 来实现,哪些依然用 Objective-C 来实现变得简单。Swift 和 Objective-C 的互用性又使得将这些功能集成到 Objective-C 变得并不困难。通过这些工具可以开放 Swift 的扩展功能并集成到现有的 Objective-C 项目中而完全不必立刻使用 Swift 重写整个项目。

为你的Objective-C代码做好迁移准备

在开始迁移你的代码之前,请确保你的 Objective-C 和 Swift 代码间有着最佳兼容性。这意味着整理并使用 Objective-C 的现代化特性来优化你的现有项目。为了和 Swift 进行更容易的无缝交互,你的现有代码需要遵循现代编码实践。这里有个简短的适配练习列表,参看Adopting Mordern Objective-C

迁移过程

最有效迁移代码的方式是基于逐个文件的方式,即一次完成一个类。由于你不能在 Objective-C 中继承 Swift 类, 最好选择一个没有子类的(译者:从类的继承角度来看,应该先从类族树的叶子节点开始,自底向上的进行迁移操作)。你就可以用单个.swift文件来代替对应的.m和.h文件了。你所有的实现代码和接口将直接放进单个 Swift 文件。你不用再创建头文件了;Xcode 会在你需要引用的时候自动生成头文件。(译者:当然这实在xcode内部机制完成的了,对开发者是透明的)

准备工作

•在 Xcode 中:File>New>File>(iOS 或者 OS X) > Other > Swift 为对应的 Objective-C.m 和.h文件创建一个 Swift 类。
•导入相关系统框架。
•如果你希望在 Swift 文件中访问 Objective-C 代码的话,可以填入一个 Objective-C 桥接头。具体的操作步骤,请看 Importing Code from Within the Same App Target
•为使你的 Swift 类能在 Objective-C 中访问使用,可以继承 Objective-C 类,或者标记上@objc属性。为类指定特殊的名称,以在 Objective-C 中使用,标记上@objc(#name#), <#name#>就是在 Objective-C 中引用的 Swift 类名。 更多信息,请看Swift Type Compatibility

开始工作

•你可以通过继承 Objective-C 类,适配 Objective-C 协议,或者更多的方式,来让 Swift 类集成 Objective-C 行为。更多信息,请看Writing Swift Classes with Objective-C Behavior
•当你使用 Objective-C APIs 的时候,你需要知道 Swift 是怎样来翻译某些 Objective-C 特性的。更多信息,请看Interacting with Objective-C APIs
•当用 Swift 编写用到 Cocoa 框架的代码时,记住某些类型是被桥接的,意味着你可以使用某些 Swift 类型来替代 Objective-C 类型。更多信息,请看Working with Cocoa Data Types
•当你在 Swift 中运用 Cocoa设计模式得时候,请看 Adopting Cocoa Design Patterns获取更多的通用设计模式的转换信息。
•对于打算将项目从 Objective-C 转换到 Swfit 的人,请看 Propeties
•在必要的时候,请为 Swift 的属性或方法,通过@objc(<#name#>)属性来提供 Objective-C 名称,就像这样:

复制代码 代码如下:

var enabled: Bool {
    @objc(isEnabled) get {
        /* ... */
    }
}

•分别用func和class func来表示 instance(-) 和 class(+) 方法。
•声明简单的宏来作为常量,将复杂的宏转换为函数。

大功告成

•在你的 Objective-C 代码中更新 import 语句为 #import "模块名-Swift.h",在Importing Code from Within the Same App Target中曾有提到。
•在Target 的成员选择框中去掉勾选框来移除原始的 Objective-C.m文件.不要立刻删除.m和.h文件,以备解决问题用。
•如果你给 Swift 类起了一个不同的名字,请使用 Swift 类名代替 Objective-C 名。

问题解决提示

对于不同的项目,迁移的经历是不尽相同的。无论怎样,都有一些通用的步骤和工具能帮你解决代码迁移时碰到的问题:

•记住:你不能在 Objective-C 中继承 Swift 类。因此,被你迁移的类不能有任何的 Objective-C 子类存在于你的应用中。
•当你迁移一个类到 Swift 的时候,你必须从 target 中移除相关的.m文件,以避免编译时提示出现重复的符号等编译错误。
•为了在 Objective-C 中可以访问并使用,Swift 类必须是一个 Objective-C 类的子类,或者被标记为@objc。
•当你在 Objective-C 中使用 Swift 代码的时候,记住 Objective-C 不能理解那些 Swift 的某些特性,请看Using Swift from Objective-C
•可以通过Commond + 点击一个 Swift 类名来查看他生成的头文件。
•可以通过Option + 点击一个符号来查看更详细的信息,比如它的类型,属性以及文档注释等。

相关文章

  • Swift方法调度之类的普通方法底层探究

    Swift方法调度之类的普通方法底层探究

    这篇文章主要介绍了Swift-方法调度-类的普通方法底层探究,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • Swift 3.0将UILabel数字颜色设置为红色的方法

    Swift 3.0将UILabel数字颜色设置为红色的方法

    这篇文章主要介绍了关于在Swift中将UILabel数字颜色设置为红色的方法,文中给出了详细的示例代码,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • Swift循环遍历集合的方法总结分享

    Swift循环遍历集合的方法总结分享

    SWIFT是苹果于2014年WWDC发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。这篇文章主要给大家总结介绍了关于Swift循环遍历集合的方法,如for-in循环、for循环以及基于块的遍历等方法,需要的朋友可以参考下。
    2017-03-03
  • 深入解析Swift语言编程中的可选链

    深入解析Swift语言编程中的可选链

    这篇文章主要介绍了深入解析Swift语言编程中的可选链,是Swift入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • Swift中非可选的可选值类型处理方法详解

    Swift中非可选的可选值类型处理方法详解

    Optional是Objective-C没有的数据类型,是苹果引入到Swift语言中的全新类型,它的特点就和它的名字一样:可以有值,也可以没有值,当它没有值时,就是nil。下面这篇文章主要给大家介绍了关于Swift中非可选的可选值类型处理方法的相关资料,需要的朋友可以参考下。
    2017-11-11
  • Swift版使用ThPullRefresh实现下拉上拉刷新数据

    Swift版使用ThPullRefresh实现下拉上拉刷新数据

    这篇文章主要介绍了Swift版使用ThPullRefresh实现下拉上拉刷新数据,需要的朋友可以参考下
    2016-01-01
  • Swift教程之枚举类型详解

    Swift教程之枚举类型详解

    这篇文章主要介绍了Swift教程之枚举类型详解,本文讲解了枚举语法、匹配枚举值与switch语句、关联值、原始值等内容,需要的朋友可以参考下
    2015-01-01
  • RxSwift学习教程之基础篇

    RxSwift学习教程之基础篇

    RxSwift是Swift函数响应式编程的一个开源库,由Github的ReactiveX组织开发,维护。下面这篇文章主要给大家介绍了关于RxSwift学习之基础篇的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍

    Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍

    这篇文章主要介绍了Objective-c代码如何移植为Swift代码,Objective-c代码转移到Swift过程介绍,需要的朋友可以参考下
    2014-07-07
  • Swift仿选择电影票的效果并实现无限/自动轮播的方法

    Swift仿选择电影票的效果并实现无限/自动轮播的方法

    这篇文章主要给大家介绍了关于Swift仿选择电影票的效果并实现无限/自动轮播的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08

最新评论