オブジェクト(たとえばsomeObject
)が別の型の変数(たとえばSpecifiedType
)に割り当て可能(キャスト可能)かどうかを確認したいと思います。 Javaでは、次のように書くことができます。
someObject instanceof SpecifiedType
関連する質問は、オブジェクトの実行時の型が別の型と等しいかどうかを見つけることです。 Javaでは、次のように書くことができます。
someObject.getClass().equals(SpecifiedType.class)
これをObjective-Cでどのように行うことができますか?
オブジェクトのクラスを返すために[myObject class]
を試してください。
以下と正確に比較できます。
if ([myObject class] == [MyClass class])
ただし、直接MyClass
識別子を使用することはできません。
同様に、オブジェクトがあなたのクラスのサブクラスであるかどうかを見つけることができます:
if ([myObject isKindOfClass:[AnObject class]])
jon Skeetとzoulが提案したとおり。
から ウィキペディア :
たとえば、Objective-Cでは、汎用の
Object
とNSObject
(Cocoa/OpenStep内)の両方がメソッドisMemberOfClass:
を提供し、メソッドへの引数が指定されたクラスのインスタンスである場合にtrue
を返します。引数が指定されたクラスを継承する場合、メソッドisKindOfClass:
は同様にtrueを返します。
isKindOfClass:
は、その音により、instanceof
に最も近くなります。
NSObject ドキュメントの isKindOfClass: メソッドを参照してください。 (そのような質問に対する通常の警告の言葉は、オブジェクトクラスをチェックすることはしばしば何か間違ったことをしている兆候であるということです。)