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

2020-01-08 22:30:40丽君

•当你使用 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 + 点击一个符号来查看更详细的信息,比如它的类型,属性以及文档注释等。