如何在Xcode中禁用特定行的警告?

12
我收到了这样的电话 [类方法] 并且有一个警告说 Class 可能无法响应 "method" 消息。
虽然 "method" 消息不存在,但我的代码使用未知消息捕获(使用 forwardingTargetForSelector),因此它将正常运行,并且构建为以这种方式运行。我该如何隐藏这个令人恼火的警告?
2个回答

16
如果你打算向一个对象发送可能没有实现的消息,并且你知道你将捕获失败,那么你应该使用invocation。
id myClone = [anObject performSelector:@selector(copy)];

这更明确地声明了您的意图,即您正在调用可能不存在的方法,并且您对此感到满意。这比抑制警告或虚假方法更清晰明了。


谢谢。 我猜如果每次调用都要创建一个选择器的话,效率可能会降低。除非我一次性声明所有的@selector。 - CodeFlakes
1
性能差异几乎无法察觉。如果您担心,可以对其进行分析。不要过早地进行优化。 - Rob Keniger
2
performSelector 只适用于参数类型和返回类型都是对象的方法;并且只有0、1或2个参数。 - user102008
具有多个参数的方法对于这种方法来说是另一个问题。 - erkanyildiz

3
您可以定义一个声明该方法的类别。在编译时将定义置于作用域内可避免警告。例如:
@interface MyClass (ShutUpTheCompilerMethods)
- (void)method;
@end

...

[MyClass method] //no warning here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接