在Objective-C中忽略“属性类型与继承的类型不兼容”警告

问题描述 投票:4回答:3

在子类中,我将属性的类型重写为该属性的子类,其工作方式如下:

ClassA: NSObject
@property (nonatomic) NSValue *value;

ClassB : ClassA
@property (nonatomic) NSNumber *value;

然而,我发现,如果ClassA没有#import NSNumber类,那么ClassB将以以下形式发出警告:Property type 'NSNumber *' is incompatible with type 'NSValue *' inherited from 'ClassA'

我不想在ClassA有一堆不必要的进口。如何覆盖Clang关于此的警告?我知道语法是:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-somethingGoesHere"
#pragma clang diagnostic pop

但我不知道我应该通过什么旗帜。有没有一个地方我可以查看通过该警告的标志?我引用了Clang User manual并尝试使用"-w"标志禁用该行的所有警告,但这不起作用。

objective-c warnings clang suppress-warnings
3个回答
1
投票

我面临的问题与你的问题略有相似,希望这个答案对你也有用。 question

现在我得到了忽略警告的解决方案。希望这个解决方案对你也有帮助。


0
投票

您可以在Xcode构建日志活动中显示警告并找到clang标志。试试这个:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wincompatible-property-type"
...
#pragma clang diagnostic pop

-1
投票

您不应该覆盖子类中的属性。我理解为什么你认为你应该这样,但它确实不是正确的设计。将第二个命名为其他内容,例如“numberValue”。

© www.soinside.com 2019 - 2024. All rights reserved.