Objective c 我可以访问Objective C中实例变量的名称吗?

Objective c 我可以访问Objective C中实例变量的名称吗?,objective-c,Objective C,如果我有这样的课程: @interface Fields : NSObject { @public NSString* location; NSString* keywords; } @end 我不仅可以访问位置和关键字的值,还可以访问这些变量的名称吗?i、 e.“地点”和“关键词”?这些名称将在计算机之间传递,不会显示给用户 或者。。。我是否使用字典并将代码和数据分开 您可以使用获取类的IVAR列表 例如: unsigned int count = 0; Ivar* ivars = clas

如果我有这样的课程:

@interface Fields : NSObject {
@public
NSString* location;
NSString* keywords;
}
@end
我不仅可以访问位置和关键字的值,还可以访问这些变量的名称吗?i、 e.“地点”和“关键词”?这些名称将在计算机之间传递,不会显示给用户


或者。。。我是否使用字典并将代码和数据分开

您可以使用获取类的IVAR列表

例如:

unsigned int count = 0;
Ivar* ivars = class_copyIvarList([self class], &count);
for(int i = 0; i < count; ++i) {
    NSLog(@"%@::%s", NSStringFromClass([self class]), ivar_getName(ivars[i]));
}
free(ivars);
无符号整数计数=0;
Ivar*ivars=class_copyIvarList([self class],&count);
对于(int i=0;i
别忘了导入,我认为不同之处在于属性和实例变量之间存在差异。虽然关系密切@卡尔:虽然你可以这样做,但我建议你不要这样做。这种元编程对于ObjC的设计模式来说确实有点陌生,走这种路线通常会导致痛苦的调试和维护问题。谢谢@bbum。我同意你的看法,虽然这种访问在某些语言中得到了完全支持,但我们已经脱离了传统的Obj C路径。我将使用另一种方法,在数据中复制变量名。我会留下Aaron Brager的答案标记为接受,以供那些想要这样一个解决方案的人使用。