4

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

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

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

但是,我发现如果ClassA没有上课,那么会有以下形式的警告#import:。NSNumberClassBProperty 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 用户手册并尝试使用该"-w"标志禁用该行的所有警告,但这不起作用。

4

3 回答 3

1

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

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

于 2014-05-28T15:51:03.630 回答
1

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

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wincompatible-property-type"
...
#pragma clang diagnostic pop
于 2019-03-28T02:36:21.870 回答
-2

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

于 2013-02-28T02:08:48.193 回答