【发布时间】:2011-07-31 15:29:54
【问题描述】:
我想了解我的目标 C 类的属性类型。我看到我可以通过使用运行时函数 property_getAttributes(property) 来做到这一点,它返回一个像这样的 C 字符串:
T@"UIColor",&,N,VsomeColor_ // ivar was UIColor* someColor_; property was (nonatomic, retain) UIColor* someColor;
或者这个:
Tf,N,vfontSize_ // ivar was CGFloat fontsize_; property was (nonatomic) CGFloat fontSize;
然后我可以解析该字符串,即查看初始 T 之后和以下逗号之前的部分。
我的问题是——这样做可能会稳定吗?还是有更好的办法?
【问题讨论】:
-
这些看起来都像实现细节一样危险......
-
好的,有没有更好的方法?
-
这没关系,但它引出了一个问题:你为什么需要这样做?很少需要像这样的运行时自省。
-
我想写一个从 plist 中读取 ivars 的通用方法,并让它适用于通用类。我也可以想象,这将使归档比现在更痛苦。
标签: iphone objective-c ios properties runtime