191

someObjectオブジェクト (例: ) が別の型の変数 (例: ) に割り当て可能 (キャスト可能)かどうかを確認したいと思いますSpecifiedType。Java では、次のように記述できます。

someObject instanceof SpecifiedType

関連する質問は、オブジェクトの実行時の型が別の型と等しいかどうかを調べることです。Java では、次のように記述できます。

someObject.getClass().equals(SpecifiedType.class)

Objective-Cでこれを行うにはどうすればよいですか?

4

3 に答える 3

270

[myObject class]オブジェクトのクラスを返すようにしてください。

次のものと正確な比較を行うことができます。

if ([myObject class] == [MyClass class])

ただし、直接MyClass識別子を使用することはできません。

同様に、オブジェクトがクラスのサブクラスであるかどうかを確認するには、次のようにします。

if ([myObject isKindOfClass:[AnObject class]])

Jon Skeet と zoul の提案による。

于 2009-02-11T11:35:36.620 に答える
37

ウィキペディアから:

たとえば、Objective-C では、ジェネリックObjectNSObject(Cocoa/OpenStep では) の両方が、メソッドへの引数が指定されたクラスのインスタンスである場合にisMemberOfClass:返すメソッドを提供します。true引数が指定されたクラスから継承されている場合、メソッドisKindOfClass:は同様に true を返します。

isKindOfClass:instanceof音からすると に最も近いでしょう。

于 2009-02-11T11:38:02.650 に答える
9

NSObjectドキュメントのisKindOfClass:メソッドを参照してください。(このような質問に対する通常の警告の言葉は、オブジェクト クラスをチェックすることは、多くの場合、何か間違ったことをしている兆候であるということです。)

于 2009-02-11T11:40:34.843 に答える