ios – 如何在头文件(.h)中创建一个不可变的只读属性,一个实现的可变读写属性(.m)

ios – 如何在头文件(.h)中创建一个不可变的只读属性,一个实现的可变读写属性(.m),第1张

概述我有一个包含字典 JSONData的对象.从头文件,以及将访问它的其他类,我希望此属性只是只读和不可变. @interface MyObject : NSObject@property (readonly, strong, nonatomic) NSDictionary *JSONData;@end 但是,我需要它从实现文件中读取和可变,像这样,但这不起作用: @interface MyO 我有一个包含字典 JSONData的对象.从头文件,以及将访问它的其他类,我希望此属性只是只读和不可变.

@H_419_8@

@H_419_8@

@interface MyObject : NSObject@property (Readonly,strong,nonatomic) NSDictionary *JsONData;@end

但是,我需要它从实现文件中读取和可变,像这样,但这不起作用:@H_419_8@

@H_419_8@

@interface MyObject ()@property (reaDWrite,nonatomic) NSMutableDictionary *JsONData;@end@implementation MyObject// Do read/write stuff here.@end

我有什么办法可以强制执行我想要的那种抽象吗?我查看了其他问题,虽然我已经知道如何从.h读取属性并从.m读取,但我找不到任何关于可变性差异的信息.@H_419_8@解决方法 您的实现中需要一个单独的私有可变变量.您可以覆盖getter以返回不可变对象.

@H_419_8@

@H_419_8@

@interface MyObject () {  NSMutableDictionary *_mutableJsONData;}@end@implementation MyObject // ...-(NSDictionary *)JsONData {   return [NSDictionary dictionaryWithDictionary:_mutableJsONData];}// ...@end

不需要实现setter,因为它只是Readonly.@H_419_8@ 总结

以上是内存溢出为你收集整理的ios – 如何在头文件(.h)中创建一个不可变的只读属性,一个实现的可变读写属性(.m)全部内容,希望文章能够帮你解决ios – 如何在头文件(.h)中创建一个不可变的只读属性,一个实现的可变读写属性(.m)所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1002858.html

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

发表评论

登录后才能评论

评论列表(0条)

保存