我创建了一个项目,它运行正常。现在我需要编写一些测试用例。所以我添加并设置了SenTestingKit。然后我开始编写测试用例,创建一个类的实例并尝试更改该类中某些变量的值。问题是我已经将一些变量声明为local(默认为“protected”),并且无法修改这些变量。那么有没有办法通过改变实例var值来测试而不向每个变量添加@property(nonatomic,retain)?提前谢谢..
答案 0 :(得分:0)
您可以使用@public将其公开。您可以使用object-> member。
访问该成员答案 1 :(得分:0)
Objective-C是一种高度内省和反思的语言。您可以访问和修改所有变量,而无需将其配置为公共变量。
如果你真的有一个二传手(但受到保护)你只需做一些事情
[myObject performSelector:@selector(setMyiVar :) withObject:value];
如果你没有setter,你可以使用class_getInstanceVariable
始终使用运行时方法来访问和修改你的ivar。请查看http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html
希望它有所帮助!
答案 2 :(得分:0)
我的目标是修改实例变量而不将@property()添加到变量中。我通过添加像
这样的实例方法来完成它-(void)setValueOfArrayCount:(int)newValue{
arrayCount = newValue;
}
-(int)getValueOfArrayCount{
return arrayCount;
}
我可以从这个课程的外面调用这些方法。