1

我已经在一个子类 NSDictionary 的类上实现了 +resolveInstanceMethod。在某些情况下,我会动态地将方法添加到我的类中,但我希望标准 NSDictionary 方法能够“正常工作”。

我认为如果我只是调用 [super resolveInstanceMethod:sel]; 就会出现这种情况。在我的方法结束时,但它不起作用。

+ (BOOL) resolveInstanceMethod:(SEL)sel
{
    BOOL value = [super resolveInstanceMethod:sel]; // this is always NO!?
    return value;
}

为什么是这样?我如何让我的班级对超类上的现有方法表现得“正常”?

4

1 回答 1

0

是什么让您期望已经存在的方法-resolveInstanceMethod:会返回?引入新方法YES的发行说明说默认实现只返回 NO:

NSObject 类实现了这些方法,默认实现今天返回 NO,尽管您仍然应该调用它,即使您只是直接继承 NSObject。

在任何情况下,甚至都不应该为类中已经存在的方法调用它。仅当您使用尚未“解析”到实现的选择器向对象发送消息时才会调用它。

于 2013-08-12T23:01:45.697 回答