假设我想要一个可变的、无序的多对多关系。出于内部优化的原因,最好将其存储在一个NSMutableDictionary
而不是一个NSMutableSet
. 但我想将该实现细节保密。
我还想提供一些符合 KVO 的访问器,所以:
- (NSSet*)things;
- (NSUInteger)countOfThings;
- (void)addThings:(NSSet*)someThings;
- (void)removeThings:(NSSet*)someThings;
现在,为字典提供访问器(当然,在我的实现文件中是私有的)会很方便,也不会那么邪恶,所以:
@interface MYClassWithThings ()
@property (retain) NSMutableDictionary* keyedThings;
@end
这对我来说似乎很好!我可以使用访问器keyedThings
在类中弄乱我的,但其他对象认为它们正在处理可变的、无序的(未键控!)多对多关系。
不过,根据良好的风格和苹果的认可等等,我担心我正在做的几件事可能是“邪恶的”。我在这里做了什么坏事吗?(例如,不提供 是不对的setThings
,因为该things
属性据说是可变的?)