类扩展中的属性属性与主类不匹配

时间:2014-07-25 10:48:50

标签: ios objective-c warnings clang compiler-warnings

我正在实施NSFilePresenter协议:

@protocol NSFilePresenter <NSObject>
@required

@property (readonly, copy) NSURL *presentedItemURL;
@property (readonly, retain) NSOperationQueue *presentedItemOperationQueue;

@end

当然,我也想在内部访问presentedItemURLpresentedItemOperationQueue

所以我声明了我的私人界面:

@interface MyClass () <NSFilePresenter>

@property (copy) NSURL *presentedItemURL;
@property (retain) NSOperationQueue *presentedItemOperationQueue;

@end

presentedItemURL会返回警告:

'copy' attribute on property 'presentedItemURL' does not match the property inherited from 'NSFilePresenter'

我们可能会在这里讨论这个警告是否有意义。但我想要实现的是在不使用KV编码或任何其他技巧编写我自己的二传手的情况下摆脱警告。 奇怪的是编译器可以使用presentedItemOperationQueue

即使使用此功能也无法解决问题

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wall"
@property (copy) NSURL *presentedItemURL;
#pragma clang diagnostic pop

1 个答案:

答案 0 :(得分:0)

我通过使用默认说明符(而不说明任何内容)来解决此问题。例如:

@interface MyClass () <NSFilePresenter>

@property NSURL *presentedItemURL;
@property NSOperationQueue *presentedItemOperationQueue;

@end

在现代Objective-C中,这意味着引用了atomicstrong