Objective c 是否可以捕获所有选择器调用并在运行时重定向它们

Objective c 是否可以捕获所有选择器调用并在运行时重定向它们,objective-c,Objective C,我想做一件有点粗俗的事 当我们尝试在未定义的类上调用方法时,通常会出现错误,例如 // We get a undefined selector callback [myClass someUndefinedMethod]; 我想在MyClass中添加一些东西,捕获所有这些未定义的方法调用并处理它们。这可能吗 我想要这样的东西,但它将拦截所有方法调用: @implementation MyClass - (void) performSelector(SEL):selector {

我想做一件有点粗俗的事

当我们尝试在未定义的类上调用方法时,通常会出现错误,例如

// We get a undefined selector callback
[myClass someUndefinedMethod];
我想在
MyClass
中添加一些东西,捕获所有这些未定义的方法调用并处理它们。这可能吗

我想要这样的东西,但它将拦截所有方法调用:

@implementation MyClass

    - (void) performSelector(SEL):selector {

          // Check if the method exists
          if (![self respondsToSelector:selector]) {
              // Handle unimplemeted selector
              NSLog(@"No method called %@", selector);
          } 

          // Otherwise proced as normal
          else {
              [super performSelector:selector];
          }
    }

@end

我想您可以尝试为“NSObject”创建一个新类别,并像这样覆盖该特定方法。无论如何,请记住,苹果公司建议不要使用类别来覆盖方法,而是添加新功能,所以这有点黑客。但是,我不确定这是否会消除警告…

覆盖方法:
-[MyClass不识别选择器:
你想叫什么就叫什么


这就是
NSManagedObject
获取/设置核心数据属性所做的工作。

为什么不重写NSObject上的方法(假设您是从它继承的,您应该是从它继承的)?

我不清楚您是试图截获发送到类还是类实例的消息。在任何情况下,可能会研究/搜索“消息转发”和“转发消息”的主题。另请参阅NSObject的forwardInvocation和Apple的runtime pgmg指南中有关消息转发的部分


这些让我找到了我一直在寻找的答案,我没有看到在这个问题的其他地方提到它们。

完美。这就是我要找的,我知道会有办法的。@paulbailey你很幸运,两分钟后我给出了完全相同的答案,你的答案被接受了:)