#iphone #objective-c
#iPhone #objective-c
Вопрос:
Мой проект использует в нем код oauthconsumer.
Когда я компилирую и анализирую свой код, я получаю уведомление о том, что «Объект отправлен- авторелиз слишком много раз».
Было бы справедливым предположением, что код был написан намного лучшим инженером, чем я, поэтому я не решаюсь «исправить» это.
Является ли следующий код неправильным?
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
OAServiceTicket *ticket = [[OAServiceTicket alloc] initWithRequest:request
response:response
data:responseData
didSucceed:[(NSHTTPURLResponse *)response statusCode] < 400];
[ticket autorelease]; // HERE
[delegate performSelector:didFinishSelector withObject:ticket withObject:responseData];
[ticket release], ticket = nil; //HERE
}
Это хороший код или автоматическое освобождение следует удалить?
Ответ №1:
Просто удалите автозапуск, и все будет в порядке. Лучший инженер явно допустил ошибку.
Ответ №2:
В показанном сценарии, поскольку ticket
он явно освобождается и не возвращается из метода, нет причин добавлять его в пул автоматического выпуска, и autorelease
вызов может быть безопасно удален.