Objective-Cで、クラスの名前が文字列である場合にクラスを取得してメッセージを送信する方法はありますか?たとえば、次のような関数funcはありfunc(@"NSString") == [NSString class]ますか?
これを知りたいのは、作業中の言語用のダイナミックリンカーライブラリを構築していて、Objective-Cライブラリへのインターフェイスを持たせたいからです。
Objective-Cで、クラスの名前が文字列である場合にクラスを取得してメッセージを送信する方法はありますか?たとえば、次のような関数funcはありfunc(@"NSString") == [NSString class]ますか?
これを知りたいのは、作業中の言語用のダイナミックリンカーライブラリを構築していて、Objective-Cライブラリへのインターフェイスを持たせたいからです。
はい—実際には2つです。Foundationタイプのフレームワーク(Cocoa、Cocoa Touch、GNUstepなど)を使用している場合は、とまったくNSClassFromString()同じ関数を使用できますfunc。フレームワークに依存したくない場合は、同様のランタイム関数がありますobjc_getClass()。これは、を受け取り、const char*指定されたクラスを返します(またはnil、何も見つからない場合)。
NSClassFromString(NSString className)名前からクラスオブジェクトを取得するために使用できます。
お役に立てれば!