すべてのプロトコルのメソッドを別のターゲットに転送する Objective-C プロトコルの実装があります。このクラスがプロトコルのメソッドを実装していることをコンパイラが警告することを除いて、エベレシングは問題ありません。#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'」と警告します