如何在运行时访问 Objective-C class 属性?

How to access Objective-C class properties in runtime?

这就是我所拥有的:

@interface Example : NSObject

@property (class) NSString *classProperty;

@end

并尝试访问 class 属性:

Class meta = objc_getMetaClass(class_getName([Example class]));
objc_property_t property = class_getProperty(meta, "classProperty"); // == nil
objc_property_t *properties = class_copyPropertyList(meta, NULL); // == nil

我正在使用 Xcode 8 和 iPhone 7 iOS 10 模拟器,只想使用 Obj-C 运行时函数访问 class 属性。

我在这里阅读了一些幻灯片:https://developer.apple.com/videos/play/wwdc2016/405/ 并在此处阅读一些信息:http://useyourloaf.com/blog/objective-c-class-properties/

还检查了 #if __has_feature(objc_class_property),它有:Macro to detect availability of class properties in Objective-C

更新:

奇怪的事情发生了:今天这段代码工作正常。我确信昨天我曾经有过它起作用的时刻,但后来就不行了。

更新 2:

阅读下面我自己的回答。

我不认为你真的能做到这一点。 Class 属性无法合成,也无法自动合成。您负责实施 getter/setter 或使用 @dynamic。这似乎是 class 级别 getter/setter 方法的语法糖,因此没有出现。

请问这是不是暂时的?

你具体想做什么?

在将 Deployment Target 设置为 iOS 8 和 iOS 9+ 时发现完全不同的行为。当 Deployment Target 设置为 iOS 8 时,Objective-C 运行时没有关于 class 属性的信息,当 Deployment Target 设置为 [=16= 时,有所有必要的信息] 9+。所以我正在开发的框架将变成 iOS 9+.