1. ホーム
  2. オブジェクティブC

[解決済み】Objective-Cでオブジェクトがどのクラスであるかをテストするにはどうすればよいですか?

2022-04-12 18:31:47

質問

Objective-Cで、あるオブジェクトが特定のクラスのインスタンスであるかどうかをテストするにはどうすればよいですか?例えば、オブジェクトaがクラスbやクラスcのインスタンスであるかどうかを確認したい場合、どのようにすればよいのでしょうか?

どのように解決するのですか?

オブジェクトがクラスaのインスタンスであるかどうかをテストする。

[yourObject isKindOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of 
// given class or an instance of any class that inherits from that class.

または

[yourObject isMemberOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of a 
// given class.

オブジェクトのクラス名を取得するには、以下のようにします。 NSStringFromClass 関数を使用します。

NSString *className = NSStringFromClass([yourObject class]);

または objective-c runtime api の c-function を使用します。

#import <objc/runtime.h>

/* ... */

const char* className = class_getName([yourObject class]);
NSLog(@"yourObject is a: %s", className);

EDITです。 Swiftの場合

if touch.view is UIPickerView {
    // touch.view is of type UIPickerView
}