gpt4 book ai didi

ios - 如何抑制每个文件的 -Wno-protocol

转载 作者:可可西里 更新时间:2023-11-01 06:21:12 25 4
gpt4 key购买 nike

我实现了 Objective-C 协议(protocol),它将所有协议(protocol)的方法转发到另一个目标。 Everething 很好,除了编译器警告这个类没有实现协议(protocol)的方法。我正在尝试使用 #pragma diagnostic 抑制此警告:

//Header file
@protocol A
-(void)test;
@end

@interface AImpl : NSObject<A> {
id<A> myItems;
}
@end

//Implementation file:
#pragma GCC diagnostic push
#pragma clang diagnostic push

#pragma GCC diagnostic ignored "-Wno-protocol"
#pragma clang diagnostic ignored "-Wno-protocol"

@implementation AImpl
- (void)forwardInvocation:(NSInvocation *)invocation {
SEL selector = [invocation selector];

if ([myItems respondsToSelector:selector]) {
[invocation invokeWithTarget:myItems];
} else {
[super forwardInvocation:invocation];
}
}
@end

#pragma clang diagnostic pop
#pragma GCC diagnostic pop

但是编译器警告“未知警告组‘-Wno-protocol’”

最佳答案

您有 3 种直接方法:

1)您可以这样做:

#pragma GCC diagnostic ignored "-Wprotocol"
#pragma clang diagnostic ignored "-Wprotocol"

您使用 pragma 指定要禁用的组,而不是要设置/更改的编译器标志。

2) 或者您可以像这样更正问题(假设您没有声明根类):

@interface AImpl : NSObject<A>
{
id<NSObject,A> myItems;
}
@end

3) 或者您可以在 Xcode 的 Project > Target > Build Phases > Compile Sources > Compiler Flags = "-Wno-protocol"

我会选择#2。

关于ios - 如何抑制每个文件的 -Wno-protocol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8338931/

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