考虑这个类:
@interface SampleClass : NSObject {
NSMutableArray *_childs;
}
- (void)addChild:(ChildClass *)child;
- (void)removeChild:(ChildClass *)child;
@end
当我添加一个子元素时,如何测试_childs数组是否包含一个对象,而不添加访问它的属性(因为我不想允许客户端代码访问_childs数组)?
考虑这个类:
@interface SampleClass : NSObject {
NSMutableArray *_childs;
}
- (void)addChild:(ChildClass *)child;
- (void)removeChild:(ChildClass *)child;
@end
当我添加一个子元素时,如何测试_childs数组是否包含一个对象,而不添加访问它的属性(因为我不想允许客户端代码访问_childs数组)?
@property
,并使用该属性进行所有访问,这样您在测试和使用相同的代码。我不确定我正确理解了你的问题,我的解析是:在实现addChild:
时,如何防止将对象第二次插入到_childs
中?
有两种方法:如果您的元素顺序不重要,则应该使用{{link1:NSMutableSet
}}而不是NSMutableArray
。在这种情况下,集合会处理一切:
- (void)addChild:(ChildClass *)child
{
[_childs addObject:child];
}
NSMutableArray
并按照以下方式进行操作:is
- (void)addChild:(ChildClass *)child
{
if ([_childs containsObject:child]) return;
[_childs addObject:child];
}