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

时间:2013-02-28 01:49:29

标签: objective-c warnings clang suppress-warnings

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

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"标志禁用该行的所有警告,但这不起作用。

3 个答案:

答案 0 :(得分:1)

我遇到了与您的问题略有相似的问题 希望这个答案对你也有用。  question

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:-1)

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