我想从一个Objective-C类获取实例变量的名称。假设我的课程如下所示:如何在Objective-C中获取实例变量的名称?
@interface MyClass : NSObject
@property (nonatomic, copy) NSSNumber *myVar;
@end
鉴于myVar,我希望得到“myVar”。然后我可以在这样的日志中使用它:
MyClass *myObject = [[myClass alloc] init];
NSLog(@"The variable is named: %@", getVarName([myObject myVar]));
然后日志会说:The variable is named myVar
。感谢您的帮助!
PS我想这样做的原因是创建一个编码变量进行归档的方法。所以,当我写我encodeWithCoder
方法我可以做这样的事情:
- (void)encodeWithCoder:(NSCoder *)aCoder
{
NSArray *varsForEncoding = [[NSArray alloc] initWithObjects:var1, var2, var3, nil];
for (NSObject *var in varsForEncoding)
{
[aCoder encodeObject:var forKey:getVarName(var)];
}
}
然后做反向的initWithCoder
。这样可以避免错字,例如,在编码时使用密钥@"myVar"
,但在初始化器中键入@"mVar"
。
工作很好,谢谢。我只需链接到libobjc.dylib并导入。 –
2012-07-25 22:52:55