-(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。
答案 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 ];
如您所见,我们将自动释放该对象,因为它将由访问者自动保留。