亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

Objective-c代碼如何移植為Swift代碼 Objective-c代碼轉移到Swift過程介紹

2020-03-09 17:52:28
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美日韩精品在线观看| 欧美精品在线第一页| 欧美精品在线观看| 欧美一级片久久久久久久| 欧美在线一区二区三区四| 亚洲日韩中文字幕在线播放| 欧美日韩国内自拍| 国内精品免费午夜毛片| 日韩中文在线观看| 国产成人精品久久二区二区| 亚洲成人久久一区| 久久精品成人一区二区三区| 欧美大荫蒂xxx| 日韩电影免费在线观看中文字幕| 午夜精品蜜臀一区二区三区免费| 欧美大肥婆大肥bbbbb| 精品magnet| 日韩免费观看高清| 国产精品777| 中文字幕亚洲国产| 日韩亚洲精品电影| 国产精品福利观看| 成人亚洲激情网| 精品视频www| 久久精品一偷一偷国产| 欧美日韩亚洲系列| 久久久欧美精品| 狠狠色狠色综合曰曰| 欧美精品18videos性欧| 欧美精品性视频| 伊人久久男人天堂| 国产精品久久久久久久午夜| 成人激情视频网| 中文字幕无线精品亚洲乱码一区| 国产精品丝袜久久久久久高清| 综合136福利视频在线| 亚洲成人精品久久久| 成人网址在线观看| 最新国产精品亚洲| 91久久在线视频| 亚洲精品中文字| 日韩精品在线视频美女| 亚洲欧洲在线看| 国产精品吹潮在线观看| 中国人与牲禽动交精品| 久久综合久中文字幕青草| 国产乱肥老妇国产一区二| 日本成人激情视频| 色在人av网站天堂精品| 日韩免费视频在线观看| 91精品国产综合久久香蕉922| 亚洲成人av资源网| 国产成人一区二区三区电影| 亚洲国产精品一区二区三区| 中文字幕日韩电影| 亚洲一区二区在线播放| 国产精品一二三视频| 欧美电影免费观看电视剧大全| 欧美精品www| 成人久久久久爱| 欧美日韩亚洲视频一区| 国产精品丝袜一区二区三区| 日韩精品免费观看| www.日韩不卡电影av| 亚洲欧美日韩一区二区在线| 久久久亚洲国产| 668精品在线视频| 91九色视频在线| 国产亚洲精品久久久| 日产精品久久久一区二区福利| 日韩有码在线电影| 国产精品一区二区女厕厕| 91精品久久久久久久久不口人| 国产亚洲欧美一区| 成人在线激情视频| 亚洲精品中文字幕av| 一区二区欧美激情| 少妇av一区二区三区| 国产女精品视频网站免费| 国内揄拍国内精品少妇国语| 欧美日韩国产123| 九九久久久久久久久激情| 91国内免费在线视频| 亚洲欧美制服丝袜| 欧美性理论片在线观看片免费| 欧美国产乱视频| 国产欧美一区二区白浆黑人| 中文字幕v亚洲ⅴv天堂| 美女福利视频一区| 成人日韩在线电影| 精品国产91久久久| 中文在线不卡视频| 欧美激情三级免费| 亚洲国产美女久久久久| 97精品欧美一区二区三区| 国产亚洲精品久久| 青青草精品毛片| 欧美裸体xxxx| 亚洲第一中文字幕| 国产精品第一区| 欧美日韩一区二区免费在线观看| 九九精品视频在线| 国产精品福利网| 欧美性少妇18aaaa视频| 91视频九色网站| 欧美日韩国产页| 91精品国产综合久久香蕉922| 国产欧美精品在线| 欧美超级免费视 在线| 亚洲精品日韩丝袜精品| 91性高湖久久久久久久久_久久99| 成人免费观看a| 91网在线免费观看| 国产日韩中文在线| 国产精品视频一区二区高潮| 亚洲激情视频网站| 亚洲成成品网站| 国产精品色婷婷视频| 亚洲精品99久久久久中文字幕| 日本成人黄色片| 欧美麻豆久久久久久中文| 久久成人精品电影| 九九久久国产精品| 亚洲国产天堂网精品网站| 国产欧美日韩免费| 亚洲美女免费精品视频在线观看| 日韩在线视频播放| 亚洲欧美日韩直播| 91黄色8090| 91老司机在线| 日韩不卡在线观看| 日韩av电影在线免费播放| 欧美精品久久久久久久| 亚洲国产美女精品久久久久∴| 久久久亚洲影院你懂的| 久久久久久久久国产精品| 亚洲精品欧美极品| 欧美高清在线视频观看不卡| 国产精品视频久久久| 国产精品免费久久久久影院| 久久精品国产免费观看| 国内外成人免费激情在线视频| 1769国内精品视频在线播放| 精品免费在线视频| 国产一区二区三区在线观看网站| 欧美第一黄网免费网站| 亚洲天堂色网站| 97成人精品视频在线观看| 欧美激情欧美激情| 亚洲最新av网址| 精品色蜜蜜精品视频在线观看| 日韩有码视频在线| 日本精品久久久久久久| 中文字幕亚洲欧美日韩在线不卡| 久久久久北条麻妃免费看| 精品国产欧美一区二区三区成人| 欧美福利小视频| 国产91精品久| 日韩免费在线电影| 欧美一级片在线播放| 精品久久久久久中文字幕| 国产日韩精品视频| 国产日韩欧美日韩| 久久精品视频va|