Ric*_*III 7 unit-testing initialization global-variables objective-c autorelease
我在Objective-C中有类似的代码:
SubclassOfNSObject *GlobalVariableThatShouldNeverChange;
@implementation MyClass
+(void) initialize
{
[super initialize];
GlobalVariableThatShouldNeverChange = [[SubclassOfNSObject alloc] init];
// Change more stuff with GlobalVariableThatShouldNeverChange
}
@end
Run Code Online (Sandbox Code Playgroud)
我在整个代码中引用了这个,并且指向它的指针永远不会改变,因为我通过我的代码在任何地方使用它.问题是,当我运行我的测试时GHUnit,我GlobalVariableThatShouldNeverChange的指针被更改的奇怪问题(即它正在重新初始化.我有一个问题,通过自动释放池释放变量,这是固定的,我有一个解决这个问题的方法,但我想知道为什么?
谢谢!
dre*_*lax 16
该文件说:
运行时只是在类之前将一个初始化发送到程序中的每个类,或者从它继承的任何类.
建议的方法是:
+ (void)initialize
{
if (self == [GHUnit class]) {
/* put initialization code here */
}
}
Run Code Online (Sandbox Code Playgroud)
另请注意文档中的以下建议:
...你通常不应发送
initialize到super您的实现.
| 归档时间: |
|
| 查看次数: |
3307 次 |
| 最近记录: |