0

我创建了一个项目,它工作正常。现在我需要编写一些测试用例。所以我添加并设置了 SenTestingKit。然后我开始通过创建一个类的实例并尝试更改该类中某些变量的值来编写测试用例。问题是我已将一些变量声明为本地变量(默认“受保护”),并且无法修改这些变量。那么有没有办法通过更改实例 var 值而不向每个变量添加 @property(nonatomic,retain) 来进行测试?提前致谢..

4

3 回答 3

0

您可以使用@public 将其公开。您可以使用 object->member 访问成员。

于 2012-03-16T08:03:31.380 回答
0

Objective-C 是一种高度内省和自反的语言。您可以访问和修改所有变量,而无需将它们配置为公共变量。

如果您实际上有一个 setter(但受到保护),您只需要做一些事情

[myObject performSelector:@selector(setMyiVar:) withObject:value];

如果您没有设置器,您可以随时使用运行时方法来访问和修改您的 ivar,方法是使用class_getInstanceVariable. 查看http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html

希望能帮助到你!

于 2012-03-16T09:20:08.337 回答
0

我的目标是修改实例变量而不将 @property() 添加到变量中。我已经通过添加实例方法来完成它

-(void)setValueOfArrayCount:(int)newValue{

     arrayCount = newValue;
}

-(int)getValueOfArrayCount{

     return arrayCount;
}

我可以从这个类之外调用这些方法。

于 2012-03-18T06:55:43.450 回答