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

前端之家收集整理的这篇文章主要介绍了在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.f2er.com/c/119486.html

猜你在找的C&C++相关文章