+ (WAController*) sharedWAController {
@synchronized([WAController class]) {
if (!_sharedWAController)
[[self alloc] init];
return _sharedWAController;
}
}
这显示潜在的泄漏
[[self alloc] init];
为什么泄漏?
答案 0 :(得分:3)
你永远不会将它分配给任何东西,所以它只会分配一个新对象并泄漏它。要修复泄漏和错误工作的代码,请指定_sharedWAController
if (!_sharedWAController)
_sharedWAController = [[self alloc] init];
答案 1 :(得分:1)
制作:_sharedWAController = [[self alloc] init];
答案 2 :(得分:0)
+ (WAController*) sharedWAController {
@synchronized([WAController class]) {
if (!_sharedWAController)
{
_sharedWAController = [[self alloc] init];
}
return _sharedWAController;
}
}
答案 3 :(得分:0)
+ (CommonUtility*) sharedUtility {
@synchronized([CommonUtility class]) {
if (!_sharedUtility)
_sharedUtility = [[self alloc] init];
return _sharedUtility;
}
}
+ (id) alloc {
@synchronized([CommonUtility class]) {
_sharedUtility = [super alloc];
return _sharedUtility;
}
}
我试着这样就完美了。但我分配了_sharedUtility对象,我需要释放。它在dealloc或autorelesae中。