2012-06-14 20 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

还没有。仍然无法在代码中构建和使用等效类型。 –