我有一个公开一些方法的类,它的实现是由一个内部对象提供的。
我使用前向调用在运行时将方法调用分派给内部对象,但是XCode发出了错误,因为它找不到已声明方法的实现。
我在SO上发现了其他一些类似的问题,但所有这些问题都通过设计更改得到了解决。
我不打算在这里讨论设计,但如果有人对此有什么建议,我有一个关于代码审查的open question,它更适合于这种讨论。
我的问题是,是否存在在XCode中关闭Incomplete Implementation警告的方法。
发布于 2013-01-22 02:02:20
您可以通过添加以下内容来抑制Incomplete Implementation警告
#pragma clang diagnostic ignored "-Wincomplete-implementation"就在@implementation上方
希望这能有所帮助
编辑
在评论中被告知这对某人不起作用,并发现原因是因为他们得到的是一个不同的警告,我已经做了一些尝试,并能够解决这个问题,所以我想我应该更新这个答案,包括他们的和GCC忽略的。因此,对于@Tony的问题,应该可以使用以下方法
#pragma clang diagnostic ignored "-Wprotocol"对于任何想知道GCC编译器版本的人来说,它是
#pragma GCC diagnostic ignored "-Wprotocol"
#pragma GCC diagnostic ignored "-Wincomplete-implementation"我还将指出,所有这些编译器也可以通过在每个文件的基础上指定设置来完成,方法是转到XCODE Project >> Target >> Build Phases >> Compile Sources并添加编译器标志,这样您只需添加-Wprotocol或Wincomplete-implementation或任何需要的编译器标志。
希望这个更新对所有人都有帮助,如果还需要的话,我会更新我的答案以包含。
编辑2个
我在这方面做了更多的挖掘,并遇到了Clang Compliler User's Manual,所以我认为这将是有趣的,并对任何在这一领域仍有问题的人有帮助。
我还发现了使用这些#pragma diagnostic ignores的另一种方法,即您可以对它们执行push和pop操作,因此,如果您只想忽略文件的特定部分,而不是全部,那么您可以执行以下操作
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmultichar"
// And pop the warning is gone.
char b = 'fa';
#pragma clang diagnostic pop请记住,所有这些#pragma编译忽略项也可以与GCC一起使用,因此上面的代码将
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmultichar"
// And pop the warning is gone.
char b = 'fa';
#pragma GCC diagnostic pop到目前为止,我尝试过的所有diagnostic ignores都可以使用push和pop。
另一个是
#pragma clang diagnostic ignored "UnresolvedMessage"
#pragma GCC diagnostic ignored "UnresolvedMessage"用于隐藏未使用的变量的方法是
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"
NSString *myUnusedVariable;
#pragma clang diagnostic pop而GCC的版本是
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
NSString *myUnusedVariable;
#pragma GCC diagnostic pop忽略来自unavailableInDeploymentTarget的警告的更多说明
#pragma clang diagnostic push
#pragma ide diagnostic ignored "UnavailableInDeploymentTarget"
leftEdge.barTintColor = rightEdge.barTintColor = self.toolbar.barTintColor;
#pragma clang diagnostic pop和performSelector泄露
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[target performSelector:cancelAction withObject:origin];
#pragma clang diagnostic pop和不推荐使用的声明
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
button = [[UIBarButtonItem alloc] initWithTitle:buttonTitle style:UIBarButtonItemStyleBordered target:self action:@selector(customButtonPressed:)];
#pragma clang diagnostic pop多亏了DanSkeel,你可以找到entire list here
发布于 2013-01-22 01:52:13
您可以在类类别接口中声明这些方法:
@interface MyClass (ForwardedMethods)
- (void)doSomething;
@end(没有该类别的实现)。这样Xcode就不会再抱怨“实现不完整”了。
https://stackoverflow.com/questions/14444203
复制相似问题