5

Objective-Cクラスにこのようなものがあります

@interface PREFIX_MyClass {
...
@end

プリプロセッサを使用して次のように変換したいと思います。

@interface AwesomeMyClass {
...
@end

のようなもの

#define PREFIX_ Awesome

単語の一部であるため機能しません。その他の方法で?私はこのようなものを使用できることを知っています:

#define PrefixClass(NAME) Awesome##NAME

@interface PrefixClass(MyClass)

しかし、私はこれが好きではありません。これは、開発ツールでのコードの完全な参照と参照が壊れるためです (つまり、この場合は Xcode)。

4

2 に答える 2

2

これはあまりエレガントではありませんが、プリプロセッサを使用して、クラス名の一部ではなく全体を置き換えることができます。

#define PREFIX_MyClass AwesomeMyClass
@interface PREFIX_MyClass

もちろん、プレフィックスを複数回使用して変更すると、これは問題になります。別のマクロを呼び出してプレフィックスを追加することで、これを修正できます。これにより、実際のプレフィックスが含まれるマクロは 1 つだけになります。

#define ADD_PREFIX(name) Awesome##name
#define PREFIX_MyClass ADD_PREFIX(MyClass)
@interface PREFIX_MyClass

これには、プレフィックスを付けるすべてのマクロが必要ですが、コード補完はPREFIX_MyClass名前を認識します。

于 2012-05-03T01:58:54.970 に答える
0

これはあなたが求めているものとは正確には異なりますが、あなたの目標を達成するための別のルートかもしれません。Xcodeを使用すると、プロジェクトのクラスプレフィックスを定義できます。ファイルナビゲーターでプロジェクトを選択すると、ファイルインスペクター(右側のサイドバーの最初の「タブ」)に次のように表示されます。

ここに画像の説明を入力してください

[クラスプレフィックス]フィールドに入力したテキストは、そのプロジェクトで作成したクラスの名前の前に追加されます。

于 2012-05-03T04:32:33.653 に答える