2017-08-28 4 views
0

私は目的のCマクロを全て高速なクラスにアクセスする共通の定数ファイルを用意しています。次の記事。Objective CクラスメソッドをSwiftクラスでのみ表示する方法

Way To Access Objective C macros In Swift

基本的には、何を示唆していることの.h & .mファイルを作成し、我々はアクセスtoo.Eg

を取得するマクロを返すパブリックメソッドを追加している私が取得することを目的とCマクロを持っていますカスタムカラー

+ (UIColor *) themeColor { 
    return THEME_COLOR; 
} 
を次のように

#define THEME_COLOR [UIColor colorWithRed:115.0/255.0 green:190.0/255.0 blue:123.0/255.0 alpha:1.0f] // this macro is not accessible inside swift class 

は、だから私はメソッドを作成しています

すぐに私のクラスでこのメソッドにアクセスできます。上記のメソッドはグローバルクラスで宣言されているので、私の目的とするCクラスもすべてこのメソッドにアクセスしています。私はこのメソッドへのアクセスを許可したいのは、それが迅速なクラスからアクセスされた場合にのみ、それを行う方法はありますか?あるいは、他のより良いアプローチがありますか?

ご迷惑をおかけして申し訳ございません。ありがとうございます。

答えて

2

+themeColorを定義しているファイルをObjCコードにインポートしないでください。 Swiftのブリッジヘッダーに入れてください。

(これは私が気にしないと思いますが、マクロを取り除き、どこでもメソッドを使用することを強くお勧めします。マクロを取り除きたくない場合は、 ObjCからメソッドを隠す方法は一般的に良い解決策です)

+0

あなたの答えはトリックでした!ありがとう、@ Rob Napier。私は既に開発されたプロジェクトに取り組んでおり、いくつかのマクロを持っているので、すべてのものを外出先に変換するのは時間のかかる作業になります。いくつかの人々がこのコードベースで作業していますので、制限しておくとコードが時間をかけて不器用になります –

関連する問題