Является ли это использование NSMutableString утечкой памяти? - PullRequest
0 голосов
/ 17 апреля 2009

В настоящее время я использую переменную экземпляра, которая является NSMutableString в классе, который является делегатом для NSURLConnection. Переменная отвечает за построение строки данных, возвращаемых методом делегата:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 

Строка 'foo' имеет свойство, установленное с сохранением. В моем классе init метод распределен очень просто:

dataString = [[NSMutableString alloc] init];

Выпускается в методе dealloc классов.

В связи: didReceiveData :, я использую переменную, как это:

    NSString *tmpString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    [dataString appendString:tmpString];
    [tmpString release];

Теперь здесь все становится сложнее. Поскольку класс, в котором я установил делегат NSURLConnection, является одноэлементным (он в основном обрабатывает вызовы типа NSURL *), мне нужно быть осторожным с тем, как я повторно использую свои объекты. Поэтому в моем соединении DidFinishLoading: class у меня есть следующее:

   // cache away data currently in dataString.
[dataString release];
dataString = [[NSMutableString alloc] init];

Эта стратегия обработки моей dataString заставляет ваши глаза кровоточить? Я теряю память? Что я могу сделать, что умнее?

1 Ответ

0 голосов
/ 17 апреля 2009

Вы собираетесь спросить нас, является ли каждый использованием объекта в вашем приложении утечки памяти?

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

И если вы подозреваете утечку, запустите зонд ObjectAlloc от Instruments. Вы уже сделали это однажды , так что вы точно знаете, как это сделать. Также есть команда утечки .

...