2011-01-28 51 views
0

我有一個代碼片斷這是這樣的:當我選擇查看賬戶,並當我回來的帳戶列表當釋放實例變量的目標C

-(void) getAccounts { 
     accounts = [[NSMutableArray alloc] init]; 
     selAccounts=[[NSMutableArray alloc] init]; 
     NSString *url=[NSString stringWithFormat:@"https://host/accts"]; 
     processor=[[AsynConnectionProcessorController alloc] init]; 
     processor.delegate=self; 
     processor.server=self.server; 
     [processor createRequestfromURL:url]; 
} 

這種觀點(帳戶列表)被稱爲從帳戶詳情視圖到我通過在帳戶列表頁面中選擇一個帳戶。每當我回到帳戶詳細信息頁面的列表帳戶頁面時,我都會看到「樂器」中的內存泄漏。 accountsselAccounts是我在dealloc中發佈的實例變量。我的問題是我需要在其他地方釋放它們嗎?如果是的話,可能會在getAccounts函數中,我該如何做。

預先感謝任何幫助

+0

除非您遵循Cocoa/iOS約定(您不是),否則不要調用方法`get *`。這應該只是`accounts`或`retrieveAccounts`。 – bbum 2011-01-28 07:34:50

回答

2

當釋放目標C中的實例變量?

當你擁有資源時,你需要釋放它。現在你什麼時候擁有資源 -

  • 如果你分配它,你擁有它。
  • 你擁有它,如果你複製它。
  • 你擁有它,如果你新的。 (相當於分配/初始化)

在你的程序中,你需要釋放accountsselAccountsprocessor

+0

如果你保留它,你也擁有它。 NARC:New/Alloc/Retain/Copy – 2011-01-28 05:06:57

0

也許是因爲您從未在您的代碼中爲您的對象調用過發佈。 Dealloc只有在您爲對象調用釋放時纔會被調用

[yourObject release];