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你很幸运,两分钟后我给出了完全相同的答案,你的答案被接受了:)