2011-01-28 48 views
3

我成立后的指令单在this tutorial,但是当我分析它,我看到下面的内存泄漏:单级内存泄漏

enter image description here

如何在我的单例类纠正这个内存泄漏?

+2

+1使用静态分析仪! – Jake 2011-01-28 11:39:57

+0

让我明确一点:您不能将其他人的教程复制到您自己的广告支持网站上,并从这里链接到它。这是抄袭,通常是对原作者版权的侵犯。我已经删除了您的宣传链接,并将问题指向原始教程。不要再这样做。 – 2011-12-12 20:46:08

回答

6

我认为,无论是谁写的教程没有写这一权利:

[[self alloc] init]; 

相反,它是前人的精力:

_sharedMySingleton = [[MySingleton alloc]init]; 

我希望它能帮助

+0

_sharedMySingleton = [[self alloc] init]也可以工作。 – 2011-01-28 11:45:00

0

它看起来像当你返回_sharedMySingleton时,它仍然是零。因此也是下一次分配。你应该尝试在alloc完成时设置它。

5

您不会将分配分配给变量。它改成这样:

+(MySingleton*)sharedMySingleton 
{ 
    @synchronized(self) 
    { 
     if (!_sharedMySingleton) 
      _sharedMySingleton = [[self alloc] init]; 
    } 

    return _sharedMySingleton; 
} 

编辑我的打字速度太慢了,别人已经回答:)

0

[[self alloc] init]; - 不分配给对象