在运行时读取__attribute __((注释(" MyAnnotation")))

时间:2014-05-26 21:56:33

标签: objective-c

我想标记一个属性,因为它注入了如下的值......

@property (nonatomic, strong) id<MyDownloadingManagerDelegate> \
   injectedDownloadManager __attribute__((annotate("DependenceInjection:inject")));

有没有办法在运行时读取这个注释?

我尝试了以下但没有成功。

objc_property_t* properties = class_copyPropertyList([instance class], &count);
for (int i = 0; i < count ; i++)
{
    objc_property_t property = properties[i];
    const char* propertyAttrs = property_getAttributes(property);

1 个答案:

答案 0 :(得分:2)

__attribute__是编译器注释;除了少数例外(constructor / destructor之外,它们对运行时行为没有影响。它们肯定与ObjC运行时的编码或其他内部簿记无关。

我建议您使用类方法创建一个协议,每个符合类的实现都返回一个可注入属性的列表。此想法的先例由+keyPathsForValuesAffectingValueForKey:设定。