2012-06-14 54 views
3

如何將其他自定義信息添加到我的objective-c方法和屬性中?我想稍後在運行時檢索此元數據。將元數據添加到Objective-C方法和屬性

我知道的Objective-C不直接支持方法的屬性,如在C#中,但是這是我在尋找:

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

我最近發現的最接近的事情是在一個的UIKit #define頭文件稱爲UI_APPEARANCE_SELECTOR。顯然,蘋果公司給某些方法添加標籤,以後再閱讀。

的方法和屬性,然後像這樣定義:

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

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

有人能解釋這是怎樣工作?

謝謝!

回答

2

對標記的元數據(.NET中的屬性,Java中的註釋等)沒有內置的支持。Apple的宏只是爲了他們的開發人員工具的好處,並且您不能創建自己的過去有任何意義的過去預處理器。

GCC/LLVM定義了一些可以附加到各種符號的屬性。例如,您可以將方法標記爲__attribute__((__deprecated__))而將其標記爲廢棄,但仍無法制作有意義的自定義屬性。

如果您告訴我們您要完成的工作,也許我們可以提出一種替代方法來解決問題。

+0

我現在沒有試圖完成任何特別的事情。好奇心抓住了我。 ;) – jimj

+0

以及LLVM有必需的設施AFAIK .. gcc當然不是。你甚至可以看到元數據與應用程序一起編譯。那麼這個答案是否過時了? –

+0

還沒有。仍然無法在代碼中構建和使用等效類型。 –