我正在尝试从 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"
在编码时使用 key 但@"mVar"
在初始化程序中键入。