Сохранить счет после вызова функции. я должен волноваться? - PullRequest
1 голос
/ 23 февраля 2010

Обычно я не проверяю количество сохраняемых данных до тех пор, пока программа не обнаружит утечки. Но сегодня (я не знаю) я проверил счет сохранения, и теперь я в замешательстве.

NSString *strErrorMessage; 
    strErrorMessage= [NSString  stringWithFormat:@"Email and Password are mandatory"];
            NSLog(@"%d", [strErrorMessage retainCount]); // retain count 1
    [objAppDelegate ShowMesssage:strErrorMessage];
    NSLog(@"%d", [strErrorMessage retainCount]); // retain count 3
    return;

Я не понимаю этого. Поскольку я не выделяю strErrorMessage, мне не нужно выпускать его обряд?

, у кого есть владелец корабля strErrorMessage.

-(void) ShowMesssage: (NSString *)strError
 {
 UIAlertView *alertError = [[UIAlertView alloc] initWithTitle:strTitle   message:strError delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
 [alertError show];
 [alertError release];
   }

Должен ли я выпустить здесь strError? (Я подумал, что нет, но что насчет оставшегося количества 3).

1 Ответ

1 голос
/ 23 февраля 2010

Проверка количества сохранений обычно не является хорошим способом отладки утечек памяти, поэтому я бы не стал сильно беспокоиться об этом, если вы понимаете, где вы выделяете / освобождаете память. Здесь вы автоматически выпускаете сообщение об ошибке и вручную запускаете alertError, так что я думаю, что вы в порядке.

Я бы предположил, что два дополнительных удержания находятся в UIAlertView. Для корректной работы потребуется хотя бы один раз сохранить строку сообщения об ошибке. Второе сохранение - это, вероятно, только некоторые подробности внутренней реализации.

...