从描述方法输出iVars?

fuz*_*oat 1 objective-c instance-variables

我很确定我只是在这里忽略了这一点而感到困惑.任何人都可以告诉我如何为一个对象编写一个简单的描述,该对象将打印出其实例变量的值到控制台.

另外:无论如何都要把信息作为一个块来呈现(例如,如果你有10个iVars,它将会让所有人逐一返回)

@interface CelestialBody : NSObject {
    NSString *bodyName;
    int bodyMass;
}

- (NSString *)description { 
    return (@"Name: %@ Mass: %d", bodyName, bodyMass);
}
Run Code Online (Sandbox Code Playgroud)

干杯 - 加里 -

Jas*_*oco 9

- (NSString*)description
{
  return [NSString stringWithFormat:@"Name: %@\nMass: %d\nFoo: %@",
     bodyName, bodyMass, foo];
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*don 5

看看这个问题的答案.代码转载如下:

unsigned int varCount;

Ivar *vars = class_copyIvarList([MyClass class], &varCount);

for (int i = 0; i < varCount; i++) {
    Ivar var = vars[i];

    const char* name = ivar_getName(var);
    const char* typeEncoding = ivar_getTypeEncoding(var);

    // do what you wish with the name and type here
}

free(vars);
Run Code Online (Sandbox Code Playgroud)