首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类扩展中的属性属性与主类不匹配

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

Stack Overflow用户
提问于 2014-07-25 18:48:50
回答 1查看 1.9K关注 0票数 4

我正在实现NSFilePresenter协议:

代码语言:javascript
复制
@protocol NSFilePresenter <NSObject>
@required

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

@end

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

所以我这样声明了我的私有接口:

代码语言:javascript
复制
@interface MyClass () <NSFilePresenter>

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

@end

presentedItemURL将返回一个警告:

代码语言:javascript
复制
'copy' attribute on property 'presentedItemURL' does not match the property inherited from 'NSFilePresenter'

我们可以讨论一下这个警告在这里是否有意义。但我想要实现的是摆脱警告,而不是编写我自己的setter,使用KV编码或任何其他技巧。奇怪的是,编译器可以很好地使用presentedItemOperationQueue

即使使用它也不能解决问题

代码语言:javascript
复制
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wall"
@property (copy) NSURL *presentedItemURL;
#pragma clang diagnostic pop
EN

回答 1

Stack Overflow用户

发布于 2018-08-22 12:44:32

我通过使用默认说明符(并且不声明任何)修复了这个问题。对于您的示例:

代码语言:javascript
复制
@interface MyClass () <NSFilePresenter>

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

@end

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24954004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档