所以,我基本上想问的是以下代码是否安全(不是它是否有效,因为它确实有效)。即,公共(public) 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
会很稳定,可以缓存)。
关于objective-c - 在 Objective-C 中隐藏不可变接口(interface)背后的私有(private)可变属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18836623/