2010-12-15 1 views
0

私はいくつかのヘルパー関数を定義しますが、私はobjective-CではなくCで記述することをお勧めします。Objective-CでCの定義を使用する

Objective Cプロジェクトでヘッダと実装Cファイルを追加する "ベストプラクティス"はどれですか?

私の関数でObjective-cの定義を使用する必要がある場合は、私のヘッダーCファイル(UIKit?)に含める必要がありますか?

例:私はNSLogのNSLogのショートカットを作成したいのですが、このコードに類似したCファイルを作成できますか? :あなたのソースファイルが(C/OBJ-Cコードとしてコンパイルされるの.m拡張子または種類Xcodeで手動で設定している場合

void MYLog (NSString *string){ 
    NSLog(@"%@",string); 
} 
+0

なぜ、NSString()が既に文字列を受け取ったときに単一のNSStringを取得するショートカットを作成するのですか?** optionaly ** more parameters? – PeyloW

+0

私は*ここでC APIを作成するつもりだと思ったたびに、後悔しました... Objective-Cバージョンはそれほど多くの作業ではなく、めったに大量のオーバーヘッドとストレートCとかなり汎用性があります。 – bbum

+0

ehm ... Peylowはあなたが正しいとは完全に無用です...これは私が質問を定式化するのを助ける例です:P -.- – MatterGoal

答えて

2

はい確かにあなたのCコード(またはその逆)にObjective-Cの関数を使用することができます)

コア機能を動作させるには、<Foundation/Foundation.h><UIKit/UIKit.h>のインポートで十分であると思います。これらのヘッダーはプリコンパイル済みヘッダー(* .pchファイル)に既にインポートされているため、インポートする必要がない場合もあります。

UIKitクラスを拡張したい場合は、プレーンc関数を使用する代わりにカスタムクラスカテゴリを実装することも検討してください。

+0

そしてCコードを.mファイルに入れて '@" foo "コンパイラによって理解されています。 – JeremyP

+0

はい、良い点、私は答えを更新します – Vladimir

0

非常に簡単にこれを行うことができます。 UIKitFoundationがすでにプレフィックスヘッダーによってインポートされているため、何もインポートする必要はありません。

+0

zoulさん、ありがとうございました。あなたの意見では、私は.c拡張子で作業するか、.mを使用する必要がありますか? – MatterGoal

+0

コンパイラがObjective-Cを理解できるように、 '.m'を使うべきです。 – zoul

関連する問題