如何向Objective-c方法和属性添加其他自定义信息?我想稍后在运行时检索此元数据。
我知道objective-c不直接支持方法属性,比如在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;
有人可以解释这是如何运作的吗?
谢谢!
答案 0 :(得分:2)
没有对标记元数据(.NET中的属性,Java中的注释等)的内置支持。这里的Apple宏仅仅是为了他们的开发人员工具的好处,你不能创建自己的有任何意义的自己的预处理器。
GCC / LLVM定义了一些可以附加到各种符号的属性。例如,您可以通过使用__attribute__((__deprecated__))
标记方法将其标记为已弃用,但仍然无法创建有意义的自定义属性。
如果你告诉我们你想要完成什么,也许我们可以提出另一种方法来解决这个问题。