在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将是稳定的并且可以缓存).

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...