这个目标c属性综合警告是什么意思?

这个目标c属性综合警告是什么意思?,第1张

概述从升级到Xcode 5.1,我开始在我的项目使用的一些代码中看到以下警告。我想弄清楚这是什么意思。 警告:自动属性合成将不会合成属性“responseHeader”,因为它是“readwrite”,但它将通过另一个属性合成“readonly” 在.m文件中出现的代码: @interface S3Response ()@property (nonatomic, readwrite, retain) 从升级到Xcode 5.1,我开始在我的项目使用的一些代码中看到以下警告。我想弄清楚这是什么意思。

警告:自动属性合成将不会合成属性“responseheader”,因为它是“reaDWrite”,但它将通过另一个属性合成“Readonly”

在.m文件中出现的代码:

@interface S3Response ()@property (nonatomic,reaDWrite,retain) NSDictionary *responseheader;@end

以前声明的属性,在.h文件中:

@property (nonatomic,Readonly) NSDictionary *responseheader;

没有该属性的@synthesize语句,也不会将responseheader或setResponseheader定义为方法。然而,有一个名为responseheader的ivar的明确定义。

似乎对我来说非常简单:属性被声明为只读类的用户,但是在本地读写,所以该类可以设置它。

这个警告是什么意思,我该怎么办?

解决方法 该代码似乎是从 AWS SDK for iOS,
而S3Response是AmazonServiceResponse的一个子类。

public AmazonServiceResponse接口定义了只读属性

@interface AmazonServiceResponse:NSObject// ...@property (nonatomic,Readonly) NSDictionary *responseheader;@end

它在实现文件中的类扩展中被重新定义为读写:

@interface AmazonServiceResponse ()@property (nonatomic,retain) NSDictionary *responseheader;@end

现在S3Response的子类也希望对这个属性进行读写访问,
因此也在其实现文件的类扩展中定义:

@interface S3Response ()@property (nonatomic,retain) NSDictionary *responseheader;@end

编译器抱怨因为 – 编译“S3Response.m”时 – 它不知道
该属性的setter存在于超类中(它不读取)
此时超类的实现文件)。编译器也不行
只是在子类中合成一个setter,因为它不能知道那个
属性由超类中的实例变量备份。

但是你知道一个setter将被生成,所以你可以删除警告
在子类实现中添加一个@dynamic声明:

@implementation S3Response@dynamic responseheader;...

@dynamic是对编译器的一个“承诺”,所有必需的访问器方法将会在运行时可用。

总结

以上是内存溢出为你收集整理的这个目标c属性综合警告是什么意思?全部内容,希望文章能够帮你解决这个目标c属性综合警告是什么意思?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1070934.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存