#iphone
#iPhone
Вопрос:
у меня в моем анализаторе :
(NSArray *)parseMethode:(NSData *)xmlData {
...
return [myNSArray autorelease];
}
и в другом контроллере я сделал это :
@synthesize anOtherNSMutableArray;
- (void)requestFinished:(ASIHTTPRequest *)request
{
NSData *responseData = [self.currentRequest responseData];
self.anOtherNSArray = [MyClassParsers parseMethode:reponseData];
...
}
и когда я обедаю, инструменты обнаруживают у меня утечку в строке :
self.anOtherNSArray = [MyClassParsers parseMethode:reponseData];
есть ли утечка в моем коде??
спасибо за ваши ответы
Ответ №1:
Попробуйте с помощью приведенного ниже
self.anOtherNSArray = nil ;
self.anOtherNSArray = [MyClassParsers parseMethode:reponseData];
Ответ №2:
Просто попробуйте это
NSData *responseData = [self.currentRequest responseData] autorelease];
Комментарии:
1. В чем причина, чтобы сделать это, пожалуйста??
Ответ №3:
Я предполагаю, что вы определили этот тип свойства для anOtherNSArray :
@property (...,retain) NSArray *anOtherNSArray;
свойство retain означает, что при использовании средства доступа значение будет сохранено автоматически!
использование средства доступа :
self.anOtherNSArray = something;
будет делать то же самое, что не использовать средство доступа, но сохранить значение :
anOtherNSArray = [someting retain];
Вы должны либо :
- не определено свойство retain для anOtherNSArray (вместо этого используйте assign), если значение не обязательно сохранять здесь
- не используется средство доступа (удалите «self».)
- отпустите экземпляр, прежде чем устанавливать новое значение!
Последний вариант — самый простой и безопасный (выполнение «self.anOtherNSArray = nil ;» как указано Jhaliya, экземпляр будет выпущен и установлен в ноль) !
Прочтение этого может помочь вам немного лучше понять, что такое свойства:http://cocoacast.com/?q=node/103