Правильный способ освобождения объекта в цели c - PullRequest
0 голосов
/ 31 мая 2011
-(NSString *)returnString
{
      NSString *str=[NSString new];
       return str;
}

-(void)getString {
     NSString *string=[self returnString];
     [string release];
}

Это подходящий / правильный способ выпуска NSString?

Кроме того, если время жизни автоматически освобожденного объекта истекло в конце цикла выполнения. Итак, можем ли мы слить сгенерированный системой пул автоматического выпуска вручную? Так что я могу освободить все автоматически выпущенные объекты в тот момент, когда я получаю предупреждение памяти.

Ответы [ 2 ]

6 голосов
/ 31 мая 2011

Вы должны создать объект с функцией автоматического выпуска.Попробуйте это

-(NSString *)returnString
   {
     NSString *str= [[NSString new] autorelease];
     return str;
   }
0 голосов
/ 31 мая 2011

Вы можете полностью осушить бассейн вручную. Каждый раз, когда вы сливаете пул, вы косвенно отправляете release всем выделенным объектам в этом пуле.

Хотя имейте в виду, что Autorelease следует использовать только в некоторых очень специфических ситуациях. Вы не должны, например, использовать его все время, чтобы не беспокоиться о выпуске ваших объектов вручную.

Лично я не полностью доверяю Авторелизу, но когда вы передаете право собственности на объект «кому-то», это ваш единственный выбор. Если вы все еще владеете им и можете разблокировать его вручную, выберите это.

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