我想從一個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