在第576行分配的对象的潜在泄漏

时间:2010-07-09 14:16:30

标签: iphone xcode

-(void)setMedicineList:(NSString*)btnText:(NSString*)kana:(NSString*)skana

{

   if(mdcnList != nil)
   {
    [mdcnList release];
   }

   mdcnList = [[MedicineList alloc]getMedicineList:btnText:kana:skana]; // Memeory leak

   [medListView setMdcnList:mdcnList];


   [btnText release];
   //[mdcnList release];  // Not work
}

如何释放mdcnList以避免“在第576行分配的对象的潜在泄漏”警告? “getMedicineList”是另一个功能。 MedicineList是Class。

2 个答案:

答案 0 :(得分:0)

我不确定你的“// Not work”意味着什么 - 你的意思是[mdcnList release]会导致问题?

假设是这样,那条线应该被取消注释。问题可能是[medListView setMdcnList:]没有保留对mdcnList的引用,应该是。

答案 1 :(得分:0)

我认为mdcnList是一个属性。如果定义为retain,则应使用访问者,而不是释放iVar,并手动设置...

替换

if(mdcnList != nil) { [mdcnList release]; }
mdcnList = [[MedicineList alloc]getMedicineList:btnText:kana:skana];

通过以下方式:

self.mdcnList = [ [ [ MedicineList alloc ] getMedicineList: btnText: kana: skana ] autorelease ];

如您所见,我们将自动释放该对象,因为它将由访问者自动保留。