objective-c - 如何摆脱 'undeclared selector' 警告

我想在一个 NSObject 实例上使用选择器而不需要实现协议(protocol)。例如,如果调用它的 NSObject 实例支持,则应该设置一个错误属性的类别方法。这是代码,代码按预期工作:

if ([self respondsToSelector:@selector(setError:)])
{
    [self performSelector:@selector(setError:) withObject:[NSError errorWithDomain:@"SomeDomain" code:1 userInfo:nil]];
}

但是,编译器没有看到任何带有 setError: 签名的方法,所以它给了我一个警告,对于包含 @selector(setError:) 的每一行片段:

Undeclared selector 'setError:'

我不想声明一个协议(protocol)来消除这个警告,因为我不希望所有可能使用它的类来实现任何特殊的东西。按照惯例,我希望他们拥有 setError:方法或属性。

这可行吗?怎么样?

干杯,
EP

最佳答案

另一种选择是禁用警告:

#pragma GCC diagnostic ignored "-Wundeclared-selector"

您可以将此行放在出现警告的 .m 文件中。

更新:

它也适用于 LLVM,如下所示:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"

... your code here ...

#pragma clang diagnostic pop

关于objective-c - 如何摆脱 'undeclared selector' 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6224976/

相关文章:

objective-c - 仅在 iOS 7 上运行时,Storyboard 原型(prototyp

ios - 错误 : _handleNonLaunchSpecificActions in iOS9

ios - 在 iOS 6 中以编程方式打开 map 应用

ios - 更改 UIImageView 的图像时淡入淡出/溶解

ios - 带有隐藏 UIView 的自动布局?

ios - 从另一个应用程序打开设置应用程序

ios - UIButton 标题文本颜色

ios - 获取 UIScrollView 滚动到顶部

objective-c - 从 NSString 中删除除数字之外的所有数字

objective-c - 如何判断 UITableView 何时完成 ReloadData?