1
我正在为模型类编写一些单元测试代码,并希望在应用程序退出和重新启动期间模拟该类的行为。使用dispatch_once创建的测试代码中的单例强制删除
+ (id) sharedInstance
{
static MyModel *singleton = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{
singleton = [[MyModel alloc] initSharedInstance];
});
return singleton;
}
// Test code:
MyModel* gModel = [MyModel sharedInstance];
... tests
gModel = nil;
gModel = [MyModel sharedInstance];
... more tests
是否有一个巧妙的解决办法,所以我可以删除/重新创建对象:我可以通过删除和重新allocing的对象,但其独立的,并因此下面的代码不会产生预期的效果实现这一目标?
请注意,这不是线程安全的,因为曾经令牌的重新初始化没有内存屏障 – 2013-05-10 23:31:03