代码之家  ›  专栏  ›  技术社区  ›  Alex Wayne

objective-c class->string-like:[nsarray classname]->@“nsarray”

  •  125
  • Alex Wayne  · 技术社区  · 14 年前

    我试图从类对象本身获取类的字符串名称。

    // For instance
    [NSArray className]; // @"NSArray"
    

    我找到了 object_getClassName(id obj) 但这需要一个实例传递给它,在我的情况下,这是不必要的工作。

    那么如何从类对象中获取字符串,以及 一个实例?

    3 回复  |  直到 7 年前
        1
  •  298
  •   dreamlax    14 年前
    NSString *name = NSStringFromClass ([NSArray class]);
    

    你甚至可以从另一个角度回去:

    Class arrayClass = NSClassFromString (name);
    id anInstance = [[arrayClass alloc] init];
    
        2
  •  1
  •   Sherwin Zadeh    12 年前

    这里有一个不同的方法来完成这项工作,只需稍微少打几次字:

    NSString *name = [NSArray description];
    
        3
  •  0
  •   wonder.mice    7 年前

    考虑这个备选方案:

    const char *name = class_getName(cls);
    

    它更快,因为它不需要分配nsstring对象并将ascii转换为任何 NSString 代表是。就是这样 NSStringFromClass() 实现。