Потенциальная утечка объекта, расположенного на линии 576 - PullRequest
0 голосов
/ 09 июля 2010
-(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 - это класс.

Ответы [ 2 ]

0 голосов
/ 09 июля 2010

Я предполагаю, mdcnList является собственностью. Если он определен как retain, вам следует использовать средство доступа вместо того, чтобы освобождать iVar и устанавливать его вручную ...

Заменить

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

чем-то вроде:

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

Как вы можете видеть, мы автоматически освобождаем объект, так как он будет автоматически сохранен средством доступа.

0 голосов
/ 09 июля 2010

Я не уверен, что означает ваше «// Не работает» - вы имеете в виду, что [выпуск mdcnList] вызывает проблему?

Предполагая, что эта строка не должна быть прокомментирована.Проблема вполне может быть в том, что [medListView setMdcnList:] не сохраняет ссылку на mdcnList, когда это должно быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...