2011-01-28 54 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]; - 不分配給對象