Утечка памяти в объекте - PullRequest
0 голосов
/ 02 июля 2010

Я получаю утечку памяти в моих установщиках объектов. Может ли кто-нибудь помочь мне решить эту проблему?

Код:

  - (void)setEstimateTax2Type:(NSString *)aEstimateTax2Type
{

if ((!estimateTax2Type && !aEstimateTax2Type) || (estimateTax2Type && aEstimateTax2Type && [estimateTax2Type isEqualToString:aEstimateTax2Type])) return;

[estimateTax2Type release];
estimateTax2Type = [aEstimateTax2Type copy]  ;
}

Спасибо заранее.

Мониш.

Ответы [ 4 ]

2 голосов
/ 02 июля 2010

Самый простой способ правильно настроить сеттер (например, ваше условие совершенно не нужно):

//.h
@property (nonatomic, copy) NSString *estimateTax2Type;
//.m
@synthesize estimateTax2Type;
1 голос
/ 02 июля 2010

у вас есть метод dealloc для освобождения estimateTax2Type, когда ваш класс освобожден?

- (void)dealloc {
    [estimateTax2Type release];
    [super dealloc];
}
1 голос
/ 02 июля 2010

Нет проблем с отправкой сообщений на ноль. Таким образом, ваш тест может быть:

if ([aEstimateTax2Type isEqualToString: estimateTax2Type])
{
    return;
}

Однако это не причина вашей утечки. Я подозреваю, что вы не публикуете в своем методе dealloc смету оценкиTax2Type.

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

Ваше условное:

if (
  (!estimateTax2Type && !aEstimateTax2Type) || 
  (estimateTax2Type && aEstimateTax2Type && 
    [estimateTax2Type isEqualToString:aEstimateTax2Type])
) return;

Появляется для завершения функции перед освобождением памяти:

[estimateTax2Type release];

Хотя я не вижу alloc

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