我有一个类公开了一些方法,它们的实现是由一个内部对象提供的.
我正在使用前向调用在运行时将方法调用分派给内部对象,但XCode正在抱怨,因为它找不到已声明方法的实现.
我还发现了其他一些类似的问题,但所有这些问题都通过改变设计得以解决.
我不想在这里讨论设计,但如果有人对它有一些建议,我有一个open question关于代码审查,这更适合这种讨论.
我的问题是,是否存在关闭XCode中Incomplete Implementation
警告的方法.
我有一个类公开了一些方法,它们的实现是由一个内部对象提供的.
我正在使用前向调用在运行时将方法调用分派给内部对象,但XCode正在抱怨,因为它找不到已声明方法的实现.
我还发现了其他一些类似的问题,但所有这些问题都通过改变设计得以解决.
我不想在这里讨论设计,但如果有人对它有一些建议,我有一个open question关于代码审查,这更适合这种讨论.
我的问题是,是否存在关闭XCode中Incomplete Implementation
警告的方法.
通过添加
#pragma clang diagnostic ignored "-Wincomplete-implementation"
略高于@implementation
希望这有帮助
EDIT
在 comments 中被告知这对某人不起作用,并找出原因是因为这是一个不同的警告,他们得到了我做了一些游戏,并能够解决这个问题,所以我想我会更新这个答案,包括他们的,以及GCC
个忽略.因此,对于@Tony
的问题,以下几点应该是可行的
#pragma clang diagnostic ignored "-Wprotocol"
对于任何想知道GCC
编译器版本的人来说
#pragma GCC diagnostic ignored "-Wprotocol"
#pragma GCC diagnostic ignored "-Wincomplete-implementation"
我还将指出,所有这diagnotstic ignores
个也可以通过在每个文件的基础上指定设置来完成,方法是转到XCODE Project >> Target >> Build Phases >> Compile Sources
并添加一个编译器标志,这样您就可以添加-Wprotocol
或Wincomplete-implementation
或任何您需要的编译器标志.
希望这个更新能帮助所有需要的人,我会更新我的答案.
EDIT 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
push
和pop
似乎与我迄今为止try 过的所有diagnostic ignores
都有效.
另一个是
#pragma clang diagnostic ignored "UnresolvedMessage"
#pragma GCC diagnostic ignored "UnresolvedMessage"
suppress 未使用变量的方法是
#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
性能 Select 器泄漏
#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