2011-01-28 40 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];