ios - 自动属性合成不会合成属性 'description',因为它在 ios objective-c 中是读写的

标签 ios objective-c

我正在为我将从 Web 服务接收的 json 数据创建一个模型,并声明属性以表示来自 json 数组的数组成员,我在 objective-c 中声明了几个属性

@property (nonatomic, strong) NSString *id;
@property (nonatomic, strong) NSString *channel;
@property (nonatomic, strong) NSString *description;
@property (nonatomic, strong) NSURL *urlPrefix;
@property (nonatomic, strong) NSString *filename;
@property (nonatomic, strong) NSString *url;
@property (nonatomic, strong) NSURL *audio_stream;

编译器对 *description 属性发出警告

自动属性合成不会合成属性“描述”,因为它是读写的,但会通过另一个属性以只读方式合成 这是什么意思。有什么地方我做得不对吗?

最佳答案

案例 1:

因为 NSString *descriptionNSString.h 中隐式声明为 readonly 属性。这是具有只读访问权限的 AutoSynthesized。如果你想用 readWrite 合成它,那么请手动合成。

您将描述声明为:

@property (nonatomic, strong) NSString *description;

其行为类型为readWrite

虽然 NSString.h 将描述声明为只读。

@property (readonly, copy) NSString *description;

如果您仍想将description用作readWrite,请在YourClassName.m 文件中手动合成。

在 .m 文件中添加这一行。

@synthesize description;

案例:2

使用 description 以外的其他名称以使用 readWrite 访问权限。

关于ios - 自动属性合成不会合成属性 'description',因为它在 ios objective-c 中是读写的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34960068/

相关文章:

ios - 如何在 Objective-C 中使用 "copy"属性?

ios - 使用 OCUnit 对 keyWindow 进行单元测试会抛出错误

ios - 如何修复 : 'seek(to:)' was deprecated in iOS 11. 0

ios - 根据 CGFloat 的变化值自动更新 CGRect

objective-c - 从 NSMutableArray 的元素中检查 0 作为整数值

objective-c - 使用窗口关闭按钮完全关闭 OS X 应用程序

iphone - 使用 UIBezierPath 绘制图形曲线

ios - 实例方法几乎匹配可选需求

ios - 在 CGRect 中查找主色的算法不起作用

ios - 如何在 ios 中的 CALayer 上添加按钮?