12

我有一个像这样 [Class method] 的电话和一个警告说 Class 可能不会响应“方法”消息。

“方法”消息确实不存在,但我的代码使用未知消息捕获(使用 forwardingTargetForSelector),因此它可以正常运行,并且构建为以这种方式运行。我怎样才能隐藏这个恼人的警告?

4

2 回答 2

16

如果您打算向一个对象发送一条可能未实现的消息,并且您知道您将捕获失败,您应该使用以下调用:

id myClone = [anObject performSelector:@selector(copy)];

这更直接地声明了您的意图,即您正在调用一个可能不存在的方法,并且您对此很满意。这是一种比抑制警告或伪造方法更清晰的方法。

于 2009-09-25T17:55:50.727 回答
3

您可以定义一个声明该方法的类别。在编译时将定义包含在范围内将避免警告。就像是

@interface MyClass (ShutUpTheCompilerMethods)
- (void)method;
@end

...

[MyClass method] //no warning here
于 2009-09-25T17:50:08.443 回答