2012-06-03 29 views
0

對不起,我的英文不好。 我想在我的iOS項目中使用純C++代碼,但我有下一個問題:使用C++(.cpp)與objective-c(.m)

我創建了一個新文件product.cpp + product.h,我創建了自己的方法和屬性,並且我想在我的viewcontroller.m中使用這個類,但不運行,我將viewcontroller.m的extensión更改爲viewcontroller.mm,但不運行,但如果我將appDelegate.m的擴展名更改爲appDelegate.mm,則可以運行。

我的問題是,我總是不得不改變MI文件.mm如果我想使用的.cpp?

:/

+0

我想答案是肯定的,因爲.mm意味着你在Objective-C++這在技術上是它自己的語言書寫。 – Hassan

+0

看看這個類似的問題,看看是否有所幫助: http://stackoverflow.com/questions/3698459/objective-c-and-cpp-files-in-xcode – Ben

回答

0

通常是,.mm的文件擴展名告訴Xcode中調用目標C++編譯器,而.M告訴編譯器調用的Objective-C編譯器。您可以使用右側的文件設置窗格(這樣您可以在.m文件上強制使用Objective-C++編譯)以每個文件爲基礎設置編譯器類型,但這不直觀,可能會混淆未來的維護人員。

如果你願意考慮從一個較長時間的C++和Objective-C的用戶一些建議,我已經做了兩個混合了很多,隨着時間的推移它更麻煩比它的價值。你如果純粹是堅持以Objective-C的好得多,如果你有一些C++庫,你只進行整合,然後做一個C包裝它。

它曾經是Xcode的分析只對Objective-C的文件,而不是目的-C++工作的情況下,所以你會失去很多該工具提供了書面的Objective-C++文件的價值。我不確定蘋果是否在一年或更長時間內改變了它,因爲我上次寫了Objective-C++,但我想他們沒有太多的理由。如果可以的話,堅持使用Objective-C,因爲分析器非常有幫助。