0

谁能告诉我 doesNotRecognizeSelect _cmd 会做什么

- (NSDictionary*)Event:(EventBase*)eventBase
{
    [self doesNotRecognizeSelector:_cmd];
    return nil;
}

[self doesNotRecognizeSelect:_cmd]; 没有自我方法调用,但它的调用,任何人都可以知道 _cmd 到 doesNotRecognizeSelect

4

1 回答 1

0
- (void)doesNotRecognizeSelector:(SEL)aSelector

aSelector 是 _cmd

它指出该方法没有被接收者实现或识别。

每当对象接收到它无法响应或转发的 aSelector 消息时,运行时系统就会调用此方法。反过来,此方法引发 NSInvalidArgumentException,并生成错误消息。

- (id)copy
{
    [self doesNotRecognizeSelector:_cmd];
}

_cmd 变量是传递给当前选择器的每个方法的隐藏参数;在此示例中,它标识了复制方法的选择器。此代码阻止子类的实例响应复制消息或超类转发复制消息 - 尽管 respondsToSelector: 仍会报告接收者有权访问复制方法。

于 2013-02-11T10:27:41.223 回答