iKi*_*KiR 3 xcode gcc clang gcc-warning ios
我实现了Objective-C Protocol,它将所有协议的方法转发给另一个目标.Everething很好,除了编译器警告这个类没有实现协议的方法.我正在尝试使用#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
Run Code Online (Sandbox Code Playgroud)
但编译器警告"未知警告组'-Wno-protocol'"
你有3个直接方法:
1)你可以这样做:
#pragma GCC diagnostic ignored "-Wprotocol"
#pragma clang diagnostic ignored "-Wprotocol"
Run Code Online (Sandbox Code Playgroud)
指定要使用pragma禁用的组,而不是使用编译器标志来设置/更改.
2)或者您可以像这样更正问题(假设您没有声明根类):
@interface AImpl : NSObject<A>
{
id<NSObject,A> myItems;
}
@end
Run Code Online (Sandbox Code Playgroud)
3) 或者你可以在Xcode的Project> Target> Build Phases> Compile Sources> Compiler Flags ="-Wno-protocol"中基于每个文件指定设置
我会选择#2.
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |