Instance Method インスタンスメソッド

respondsToSelector:

Returns a Boolean value that indicates whether the receiver implements or inherits a method that can respond to a specified message.

Declaration 宣言

- (BOOL)respondsToSelector:(SEL)aSelector;

Parameters パラメータ

aSelector

A selector that identifies a message.

Return Value 戻り値

YES if the receiver implements or inherits a method that can respond to aSelector, otherwise NO.

Discussion 解説

The application is responsible for determining whether a NO response should be considered an error.

You cannot test whether an object inherits a method from its superclass by sending respondsToSelector: to the object using the super keyword. This method will still be testing the object as a whole, not just the superclass’s implementation. Therefore, sending respondsToSelector: to super is equivalent to sending it to self. Instead, you must invoke the NSObject class method instancesRespondToSelector: directly on the object’s superclass, as illustrated in the following code fragment.


if( [MySuperclass instancesRespondToSelector:@selector(aMethod)] ) {
    // invoke the inherited method
    [super aMethod];
}

You cannot simply use [[self superclass] instancesRespondToSelector:@selector(aMethod)] since this may cause the method to fail if it is invoked by a subclass.

Note that if the receiver is able to forward aSelector messages to another object, it will be able to respond to the message, albeit indirectly, even though this method returns NO.

See Also 参照

Testing Object Inheritance, Behavior, and Conformance

Related Documentation 関連文書