131

クラスオブジェクト自体からクラスの文字列名を取得しようとしています。

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

私は見つけましobject_getClassName(id obj)たが、インスタンスを渡す必要があります。私の場合、それは不必要な作業です。

では、インスタンスではなく、クラスオブジェクトから文字列を取得するにはどうすればよいですか?

4

3 に答える 3

311
NSString *name = NSStringFromClass ([NSArray class]);

逆に戻ることもできます。

Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
于 2010-02-25T06:04:04.527 に答える
2

少し少ないタイピングでそれを行う別の方法は次のとおりです。

NSString *name = [NSArray description];
于 2012-12-28T22:56:47.943 に答える
2

この代替案を検討してください。

const char *name = class_getName(cls);

NSStringオブジェクトを割り当てたり、ASCIIを任意のNSString表現に変換したりする必要がないため、はるかに高速です。これNSStringFromClass()が実装方法です。

于 2017-09-26T18:11:59.127 に答える