web-dev-qa-db-ja.com

iPhoneでオブジェクトのタイプを確認する方法は?

オブジェクトのタイプを確認したい。どうやってやるの?

シナリオは、オブジェクトを取得しています。そのオブジェクトがタイプAの場合、いくつかの操作を実行します。タイプBの場合、いくつかの操作を行います。現在、オブジェクトのタイプはAおよびBの親であるCです。

私は2つのクラスAViewControllerBViewControllerを持っています。 UIViewControllerにあるオブジェクト。オブジェクトがAViewControllerであるかBViewControllerであるかを確認する方法は?

63
g.revolution
if([some_object isKindOfClass:[A_Class_Name class]])
{
    // do somthing
}
152
Pavel Yakimenko

NSObjectには、クラスをチェックできるメソッドがいくつかあります。

最初に、オブジェクトのクラスを返す-classがあります。これにより、AViewControllerまたはBViewControllerが返されます。

次に、-isKindofClass:isMemberOfClass:の2つのメソッドがあります。

-isKindOfClass:は、レシーバーを引数として渡されたクラスと比較し、クラスが同じタイプまたは指定されたクラスのサブクラスであるかどうかに基づいてtrueまたはfalseを返します。

-isMemberOfClass:は、引数として渡されたクラスとレシーバーを比較し、クラスが指定されたクラスと厳密に同じクラスであるかどうかに基づいてtrueまたはfalseを返します。

45
Jasarien

Objective-Cのより一般的なパターンは、目的のメソッドにオブジェクトが応答するかどうかを確認することです。例:

if ([object respondsToSelector:@selector(length)]) {
    // Do something
}

if ([object conformsToProtocol:@protocol(NSObject)]) {
    // Do something
}
3
rpetrich