2015-04-14 54 views
2

有一個快速項目其中我有一個Objective-C文件。我想從Objective-C文件中調用Swift類函數在快速項目中調用Objective-C中的Swift函數

這樣做的最佳方式是什麼?我使用NSNotification來完成它,但想知道是否有更好的方法來做到這一點。

測試橋接-Header.h

#import "ObjectiveC.h" 

ClassA.swift

@objc class ClassA { 

    func f1() { 

    } 
} 

ObjectiveC.h

void objC_f1() 

ObjectiveC.m

void objC_f1() { 

    //Create an instance of ClassA and call function f1 
} 

結論

  • 有一些麻煩,造成因爲我有一個測試用例方案。
  • 當我創建一個沒有testcase方案的新項目時,它工作正常。
  • 請注意 - -Swift.h產生,但不會在項目導航上市
  • 這個回答我的問題 - How to call Objective-C code from Swift
+0

可能重複[如何從Swift調用Objective C代碼](http://stackoverflow.com/questions/24002369/how-to-call-objective-c-code-from-swift) –

+0

它看起來像你的例子不是真實的代碼?文件名與內容不匹配。具體來說,什麼是「Test-Bridging-Header.h」。這是您手動創建的文件嗎?你在ObjectiveC.h和.m的頂部導入了什麼? –

+0

@MikeD就是這個問題的對面。 – swiftBoy

回答

0

從蘋果DOC Apple Doc Link

導入斯威夫特成Objective-C

當您將Swift代碼導入到Objective-C中時,您依賴於一個 Xcode生成的頭文件來公開這些文件o Objective-C。這個 自動生成的文件是一個Objective-C頭文件,它在您的目標中聲明瞭 Swift接口。它可以被認爲是你的Swift代碼的一個 傘頭。這頭的名字就是你的 產品模塊名稱後面加上「-Swift.h」

例如,如果你的產品名稱爲MyApplication的,你只需要導入生成的文件MyApplication-Swift.h

+1

這是一個快捷的項目,正如問題中所述,橋文件被添加。但它不起作用。 – user1046037

+0

如果我理解你的問題,你想調用Objective-C的swift函數嗎? – bsarr007

+0

是的,但這是一個迅速的項目。有沒有辦法建立一個客觀的C橋。如果是的話你可以發佈示例代碼。 – user1046037