4

Objective-C のメソッドとプロパティに追加のカスタム情報を追加するにはどうすればよいですか? 後で実行時にこのメタデータを取得したいと考えています。

C# のように、objective-c がメソッド属性を直接サポートしていないことはわかっていますが、これが私が探しているものです。

[MyCustomAttribute(true)]
public void MyAwesomeMethod(int arg) {
     // ...
}

私が最近見つけた最も近いものは#define、UIKit ヘッダー ファイルのUI_APPEARANCE_SELECTOR. どうやら Apple は特定のメソッドにこれをタグ付けして、後で読むようにしています。

メソッドとプロパティは次のように定義されます。

@property(nonatomic,retain) UIColor *tintColor UI_APPEARANCE_SELECTOR;

- (void)setBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics UI_APPEARANCE_SELECTOR; 

誰かがこれがどのように機能するかを正確に説明できますか?

ありがとうございました!

4

1 に答える 1

3

タグ付けされたメタデータ (.NET の属性、Java の注釈など) の組み込みサポートはありません。ここでの Apple のマクロは、開発者ツールの利益のためだけのものであり、プリプロセッサを超えて意味を持つ独自のマクロを作成することはできません。

GCC/LLVM は、さまざまなシンボルに付加できるいくつかの属性を定義します。たとえば、メソッドにタグを付けることで非推奨としてマークすることはできますが__attribute__((__deprecated__))、意味のあるカスタム属性を作成する方法はまだありません。

何を達成しようとしているのかを教えていただければ、問題に対する別のアプローチを提案できるかもしれません。

于 2012-06-14T15:40:34.633 に答える