天天看點

swift objective-及c語言 混編

在xocde6出來我們大部分代碼都是用objective-c寫的(部分C/C++),現在出生來了一個新的語言叫swift,那麼如何既能使用我們之前的代碼,還可以使用新語言呢, 本文就此做一下說明。

關于swift語方的學習可以看文檔 The Swift Programming Language 本文假設你已經有所了解,下面基于目前您目前在做的objective-c來做swift擴充, 假設我們想要用swift在原來的工程中做一個新的view界面, 這個view會用到原有的objective-c中的類,最終将這個新的view 再加到我們現有工程中。

swift objective-及c語言 混編

首先看官方說明, 兩種語是可以同時存在同一個工程中, 不論這個工程是基于哪一種語言建立的, 都可以加入另一個語言,使他們同時存在同一個工程中進行混合編譯。

1. 我們添加swift類到現有的objective-c工程中。CMD+N 如下所示

swift objective-及c語言 混編

2.點Next後 輸入sfLoginView 語言選擇swift

swift objective-及c語言 混編

3.點Next後 會彈出堤示,是否建立橋接檔案,隻有第一次建立時才會出現, 建立第二個類時如果之前已經建立就不會有提示了, 該檔案被用來在swift中使用objective-c的類時,引入頭檔案。

swift objective-及c語言 混編

4.點選 YES後就建立了兩個檔案,如下圖所示,我的工程名叫SePass,生成的橋接檔案叫SePass-Bridging-Header.h

swift objective-及c語言 混編

5.打開sfLoginView.swift檔案,建立一個我們的swift類,當然你也可以使用playground檔案來編輯後再copy到swift檔案中。

swift objective-及c語言 混編

6. 現在假設我們需要在swift中使用一個objective-c的一個類,叫GTMBase64, 此時我們隻要打開剛才生成的橋接檔案SePass-Bridging-Header.h 在裡面引用我們想要的頭檔案。

swift objective-及c語言 混編

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

swift objective-及c語言 混編

9. 此時XCode會生成一個頭檔案,whatwhatwhat-swift.h 我們隻在要需要使用sfLoginView的oc.m檔案中引用這個頭檔案後,就可以使用sfLoginView類了

    #import "whatwhatwhat-swift.h"

swift objective-及c語言 混編

10. 我們再來看下人whatwhatwhat-swift.h中是什麼内容

看來是系統幫助我們生成了, 對應swift類的objective-c的類實作方式

swift objective-及c語言 混編

11.下面是官方說明, 一旦你導入swift代碼到你的工程後,你就可以使用标準ocjective-c來操作swift類

swift objective-及c語言 混編

參考 http://www.jianshu.com/p/5b5238b2dbb9

http://www.cnblogs.com/mylizh/p/3971544.html

http://www.2cto.com/kf/201604/501934.html

http://blog.csdn.net/zlj_jeck/article/details/51503937 詳解swift和OC以及C語言的混編(不看後悔!)

http://www.jianshu.com/p/084f2ca45007

轉載于:https://www.cnblogs.com/yeng/p/5919846.html