【发布时间】:2013-01-18 23:48:36
【问题描述】:
我使用的是 Xcode 4.5。 在我最新的 Xcode 项目中,当我构建/编译我的程序时会弹出这个警告:
Category is implementing a method which will also be implemented by its primary class
这是导致错误的代码:
@implementation NSApplication (SDLApplication)
- (void)terminate:(id)sender {
SDL_Event event;
event.type = SDL_QUIT;
SDL_PushEvent(&event); }
@end
我已经做到了,所以编译器会忽略(或跳过)使用pragma code 生成的警告。
所以我的代码现在看起来像这样:
@implementation NSApplication (SDLApplication)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
- (void)terminate:(id)sender{
SDL_Event event;
event.type = SDL_QUIT;
SDL_PushEvent(&event);}
#pragma clang diagnostic pop
@end
显然它完成了这项工作,并且一旦构建/编译,就不会生成任何警告。
我的问题是,这是一种以这种方式抑制或忽略警告的安全/正常方式吗?
我在一些帖子上读到使用子类是有利的,但是有很多人赞成和反对以这种方式使用它们......我很感激你的想法:)
【问题讨论】:
-
如果你用
all_load链接二进制文件,那么是的,它是安全的。但是,只要有可能,您应该更喜欢其他方法,因为这种方法非常神秘,虽然它有效,但对于大型项目而言,它的可维护性不是很好。
标签: objective-c pragma