2012-10-09 43 views
1

我想在我的應用程序中使用自動釋放。我想實現這個方法 get by analyze 如何在iPhone中使用自動釋放

- (void)selectorConnect: (NSArray *)args 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    //some code 

    [pool release]; 
} 

獲得墜毀在[pool release]線。任何解決方案。

+4

我知道這並不能回答你的問題,但爲什麼不ARC? – deanWombourne

+0

崩潰說什麼? –

+0

似乎無法在ARC中升級我的整個應用程序,因此我們只能使用此方法。因此,上述方法的任何解決方案? – Dhaval

回答

4

當您清空自動釋放池時,它會在其內部的所有對象上調用autorelease

如果你遇到了[pool release]行崩潰,那麼你已經添加了一個對象到autorelease池並且已經發布了它。

運行靜態分析器,看看它給你什麼樣的警告。

如果您仍然不知道,請啓用NSZombies並查看兩次釋放哪個對象。

最後,如果仍然沒有幫助,你的代碼添加到這個問題,我們都可以看看:)

+0

請分析我的編輯問題。 – Dhaval

+1

這告訴我你需要自動釋放'args'和'socketControl' - 它們正在被你引用,但沒有被釋放。但是,他們不是你的游泳池崩潰的原因。我認爲這是在導致崩潰的問題中第二次調用'[pool release]'? – deanWombourne

+1

@deanWombourne:no,'_socketControl'是一個實例變量,並且被正確保留。分析器指向'NSNumber'對象的泄漏 – newacct

相關問題