gpt4 book ai didi

objective-c - 动态转发 : suppress Incomplete Implementation warning

转载 作者:IT老高 更新时间:2023-10-28 11:41:31 25 4
gpt4 key购买 nike

我有一个公开一些方法的类,其实现由内部对象提供。

我正在使用前向调用在运行时将方法调用分派(dispatch)给内部对象,但 XCode 提示,因为它找不到已声明方法的实现。

我在 SO 上发现了一些其他类似的问题,但都通过设计更改解决了。

我不想在这里讨论设计,但如果有人对此有任何建议,我有一个 open question关于 Code Review,更适合这类讨论。

我的问题是这里是否存在关闭 XCode 中 Incomplete Implementation 警告的方法。

最佳答案

您可以通过添加

来抑制 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 项目 >> 目标 >> 构建阶段 > 以每个文件为基础指定设置来完成> 编译源代码 并添加编译器标志,这样您只需添加 -WprotocolWincomplete-implementation 或任何您需要的编译器标志。

希望此更新对所有人有所帮助,如果有需要我将更新我的答案以包括在内。

编辑 2

我对此进行了更多研究,结果发现了 Clang Compliler User's Manual所以我认为这对任何在该领域仍有问题的人来说会很有趣和有帮助。

我还找到了另一种使用这些 #pragma diagnostic ignores 的方法,那就是你可以 pushpop 它们,如果您只想忽略文件的特定部分而不是全部,那么您可以执行以下操作

    #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

pushpop 似乎适用于我迄今为止尝试过的所有 诊断忽略

另一个是

    #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

更多关于忽略来自availableInDeploymentTarget 的警告

    #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

关于objective-c - 动态转发 : suppress Incomplete Implementation warning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com