Objective c 如何在objective C单元测试中检查私有成员?
考虑到这一类:Objective c 如何在objective C单元测试中检查私有成员?,objective-c,xcode,unit-testing,Objective C,Xcode,Unit Testing,考虑到这一类: @interface SampleClass : NSObject { NSMutableArray *_childs; } - (void)addChild:(ChildClass *)child; - (void)removeChild:(ChildClass *)child; @end 如果_childs数组包含一个对象而不添加属性来访问它(因为我不希望允许客户端代码访问_childs数组),我如何测试添加子对象的时间 只需创建一个返回数组计数的-(int)c
@interface SampleClass : NSObject {
NSMutableArray *_childs;
}
- (void)addChild:(ChildClass *)child;
- (void)removeChild:(ChildClass *)child;
@end
如果_childs数组包含一个对象而不添加属性来访问它(因为我不希望允许客户端代码访问_childs数组),我如何测试添加子对象的时间 只需创建一个返回数组计数的-(int)childCount方法。在类扩展中为其创建一个
@property
,并将该属性用于所有访问,这样您就可以测试并使用相同的代码。我不确定我是否正确理解了您的问题,我将其解析为:在实现addChild:
时,如何防止再次将对象插入\u childs
有两种方法:如果元素的顺序无关紧要,那么只需使用a而不是NSMutableArray
。在这种情况下,集合会处理所有事情:
- (void)addChild:(ChildClass *)child
{
[_childs addObject:child];
}
如果顺序很重要,请使用NSMutableArray
并按如下方式操作:
- (void)addChild:(ChildClass *)child
{
if ([_childs containsObject:child]) return;
[_childs addObject:child];
}
目标C没有“私人成员”;它有实例变量。相似,但不完全相同。是的,残缺不全的C++词汇;你越快放弃C++的复杂性,并接受Objtovi-C的简单性,你就可以更快地应用你的应用程序……)(严肃地说,我已经教了几百年的开发人员Objy-C,这些最困难的两组是C++和java程序员,他们假设Objc工作的方式相同——不是说你正在做……只是一个观察)。把这个方法放在类扩展中。是的,但是用这种方法,我只需要修改我的类来测试它,我不需要在我的客户端代码中使用childCount方法。谢谢,这是我见过的最好的方法。代码只是一个例子,这是在单元测试中访问实例变量而不修改我想知道的代码的概念