objc swift 混编
原鏈接:http://blog.csdn.net/xuanwenchao/article/details/30226823
在xocde6出來我們大部分代碼都是用objective-c寫的(部分C/C++),現在出生來了一個新的語言叫swift,那么如何既能使用我們之前的代碼,還可以使用新語言呢, 本文就此做一下說明。
關于swift語方的學習可以看文檔 The Swift Programming Language 本文假設你已經有所了解,下面基于當前您當前在做的objective-c來做swift擴展, 假設我們想要用swift在原來的工程中做一個新的view界面, 這個view會用到原有的objective-c中的類,最終將這個新的view 再加到我們現有工程中。
?
首先看官方說明, 兩種語是可以同時存在同一個工程中, 不論這個工程是基于哪一種語言創建的, 都可以加入另一個語言,使他們同時存在同一個工程中進行混合編譯。
?
?
1. 我們添加swift類到現有的objective-c工程中。CMD+N 如下所示
?
2.點Next后 輸入sfLoginView 語言選擇swift
?
3.點Next后 會彈出堤示,是否創建橋接文件,只有第一次創建時才會出現, 創建第二個類時如果之前已經創建就不會有提示了, 該文件被用來在swift中使用objective-c的類時,引入頭文件。
?
4.點擊 YES后就創建了兩個文件,如下圖所示,我的工程名叫SePass,生成的橋接文件叫SePass-Bridging-Header.h
?
5.打開sfLoginView.swift文件,創建一個我們的swift類,當然你也可以使用playground文件來編輯后再copy到swift文件中。
?
6. 現在假設我們需要在swift中使用一個objective-c的一個類,叫GTMBase64, 此時我們只要打開剛才生成的橋接文件SePass-Bridging-Header.h 在里面引用我們想要的頭文件。
?
7. 引用頭文件后,就可以直接用該類了。
?
? ? ? ??var?imageData:NSData?=GTMBase64.decodeString(g_DataImageKey)
?
8. 現在我們用swift編寫的類sfLoginView已經完成了,接下來我們要在現有的objective-c中引用我們的swift編寫的類了, 因為swift類自己沒有頭文件,我們無法直接import過來, 所以我們要幫助他生成一個可以引用的頭文件,點工程文件->選targets -> BuildingSettings -> Product Module Name 我們輸入whatwhatwhat ? ?再將?Defines Module = YES
?
9. 此時XCode會生成一個頭文件,whatwhatwhat-swift.h 我們只在要需要使用sfLoginView的oc.m文件中引用這個頭文件后,就可以使用sfLoginView類了
?
? ? #import?"whatwhatwhat-swift.h"
?
?
10. 我們再來看下人whatwhatwhat-swift.h中是什么內容
看來是系統幫助我們生成了, 對應swift類的objective-c的類實現方式
?
?
11.下面是官方說明, 一旦你導入swift代碼到你的工程后,你就可以使用標準ocjective-c來操作swift類
?
至此任務完成, 匆忙打字編輯,如果有寫的不對的, 歡迎批評指正交流。
QQ:407300101
轉載于:https://www.cnblogs.com/liyufeng2013/p/4022226.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的objc swift 混编的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银行推出的理财产品有风险吗 注意理财产
- 下一篇: 助学贷款申请条件