web-dev-qa-db-ja.com

Objective-Cクラス->次のような文字列:[NSArray className]-> @ "NSArray"

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

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

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

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

127
Alex Wayne
NSString *name = NSStringFromClass ([NSArray class]);

他の方法に戻ることもできます:

Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
303
dreamlax

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

_const char *name = class_getName(cls);
_

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

1
wonder.mice

入力を少し減らして別の方法で行う方法を次に示します。

NSString *name = [NSArray description];
1
Sherwin Zadeh