4

如何向我的 Objective-C 方法和属性添加额外的自定义信息?我想稍后在运行时检索此元数据。

我知道objective-c不直接支持方法属性,就像在C#中一样,但这是我正在寻找的:

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

我最近发现的最接近的东西是#defineUIKit 头文件中名为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 回答