微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Objective-C中隐藏不可变接口后面的私有可变属性

所以,我基本上想问的是下面的代码是否安全(不管它是否有效,因为它确实如此).即,公共getter是否会覆盖actionLog属性的合成getter [属于不同类型]?

.h文件

@interface SomeClass : NSObject
- (NSArray*) actionLog;
@end

.m文件

@interface SomeClass ()
@property (strong,nonatomic) NSMutableArray* actionLog;
@end

@implementation SomeClass
...
@end

解决方法

这不仅可以,而且正是为什么首先要创建类扩展!

是的,会有一个自动合成的ivar和一对getter / setter方法按预期生成.

对不起 – 错过了NSArray与NSMutableArray部分.不,你做不到;类型必须相同.

但是,您无论如何都不想返回可变数组.首先,调用者可能会修改它(一个错误).但是,更重要的是,调用者将假定内容是API所暗示的不可变的,因此,当该数组的内容调用者下面更改时,它可能会导致问题(例如;调用者可以合理地假设结果为count将是稳定的并且可以缓存).

原文地址:https://www.jb51.cc/c/119486.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐