考虑这个课程:
@interface SampleClass : NSObject {
NSMutableArray *_childs;
}
- (void)addChild:(ChildClass *)child;
- (void)removeChild:(ChildClass *)child;
@end
如果_childs数组包含一个对象而没有添加属性来访问它,我如何测试添加子项时(因为我不希望允许客户端代码访问_childs数组)?
答案 0 :(得分:6)
在类扩展中为它创建一个@property
,并使用该属性进行所有访问,这样就可以测试并使用相同的代码。
答案 1 :(得分:1)
我不确定我是否正确理解了您的问题,我将其解析为:在实施addChild:
时,如何阻止第二次将对象插入_childs
?
有两种方法:如果元素的顺序无关紧要,那么您只需使用NSMutableSet
而不是NSMutableArray
。在这种情况下,该集合处理所有事情:
- (void)addChild:(ChildClass *)child
{
[_childs addObject:child];
}
如果订单 很重要,请坚持使用NSMutableArray
并按照以下方式执行操作:
- (void)addChild:(ChildClass *)child
{
if ([_childs containsObject:child]) return;
[_childs addObject:child];
}
答案 2 :(得分:0)
只需创建一个 - (int)childCount方法,该方法返回数组的计数。