開發 iPhone 程式的大家,您是用舊的Objective-C語言或是用新的Swift語言開發應用程式呢?您知道Swift跟Objective-C的檔案可以混用嗎?這種混用方法叫做Mix and Match。使用此方法,可以讓您在舊有的Objective-C專案中,加入以Swift程式碼撰寫的新功能;或是相反、讓您能夠在新的Swift專案中使用舊的Objective-C類別。本篇文章就要帶大家實際帶著大家做一遍,有興趣的朋友可以參考一下:

***** 檔案介紹 *****

本範例中,準備了以不同語言撰寫的同一個類別。

類別裡面都只有一個方法:接受兩個參數的add方法。

 

如果是Swift檔案的話,類別的名稱我命名成Calculator。

呼叫add方法時,會印出answer from swift file;

SwiftAndObjC_5

 

如果是Objective-C檔案的話,類別的名稱我命名成OBJCCalculator。

呼叫add方法時,會印出answer from objective c file

SwiftAndObjC_7

 

***** Objective-C bridging header *****

不管是[在Swift專案中使用Objective-C檔案]或是[在Objective-C專案中使用Swift檔案]都需要使用Objective-C bridging header檔案。加入Objective-C bridging header檔案的方法有兩種:

A.由Xcode直接自動生成

當把Objective-C的檔案加入Swift專案的時候,或是把Swift檔案加入Objective-C的專案的時候,會跳出一個對話框,問您是否要加入Objective-C bridging header檔案。按下[Create Bridging Header]的話,就會產生出以您的專案名為首、以「-Bridging-Header.h」結尾的標頭檔。

SwiftAndObjC_1

 

B.自己手動生成

當把Objective-C的檔案加入Swift專案的時候,或是把Swift檔案加入Objective-C的專案之後,在上述的對話框跳出時,可以選擇不要按下[Create Bridging Header]、自己手動加入Objective-C bridging header。做法就是在功能表中點選[File]>[New]>[File]。然後選[iOS](或是watchOS或是tvOS或是OSX)下的[Source]裡面的[Header File]自己產生一個標頭檔。

 

在專案的Build Settings下、Swift Compiler – Code Generation一欄中,確認有加入Objective-C bridging header檔案的位置。用第一種方法生成的Objective-C bridging header檔案、Xcode會自動加入;用第二種方式生成的Objective-C bridging header檔案,這邊要自己標示出檔案的位置。

SwiftAndObjC_2

 

***** 在Swift專案中使用Objective-C檔案 *****

上面的標頭檔中,直接匯入(import)所有想要加入的Objective-C類別標頭檔。完成設定後,在程式中要用到Objective-C的類別時,就直接使用Swift語言、就可以使用Objective-C類別提供的功能。

使用的時候,用Objective-C的語法生成Swift撰寫的類別。並且以Objective-C的語法呼叫Swift撰寫的類別方法。

 

範例中,我的Swift專案叫做Calculator。先在Objective-C bridging header檔案中,匯入所有想要加入的Objective-C類別標頭檔。

SwiftAndObjC_9

 

使用的時候,用Swift的語法生成Objective-C撰寫的類別。並且以Swift的語法呼叫Objective-C撰寫的類別方法。

SwiftAndObjC_4

 

***** 在Objective-C專案中使用Swift檔案 *****

加入的Swift類別要標註是NSObject的子類別;需要使用Swift類別的時候,在需要使用的Objective-C的.m檔裡,匯入以為Objective-C專案名為首、「-Swift.h」結尾的標頭檔。

範例中,在匯入的Swift類別裡,標註是NSObject的子類別。

SwiftAndObjC_6

 

我的Objective-C專案叫做OldCalculator,所以一開始匯入了以專案名為首、「-Swift.h」結尾的標頭檔:「OldCalculator-Swift.h」。

使用的時候,用Objective-C的語法生成Swift撰寫的類別。並且以Objective-C的語法呼叫Swift撰寫的類別方法。

SwiftAndObjC_8

 

相關連結

************************************************

你想要開發 iPhone App嗎?零基礎的 iPhone 開發課程 [課程連結]

免費實機測試方法分享 [頁面連結

(3665)

superstardj

been a DJ, a rapper, a musician and a recording artist... a novel-writer, a language-book author, and a chief editor... a painter, a book-cover designer and many more... right now a programmer who designs mobile application, both iOS and Android devices...

Leave a Reply

Your email address will not be published. Required fields are marked *