Я не могу сказать это лучше, чем в Apple Docs , поэтому я не буду пытаться. Следуйте этому руководству, и вы должны быть решены.
В качестве дополнительного примечания в вашем коде есть несколько проблем с памятью в этой строке
self.receivedData = [[NSMutableData alloc] initWithCapacity:[response expectedContentLength]];
Вы создаете NSMutableData
объект с сохранением счетчика +1 и при условии, что у вас есть соответствующие геттеры / сеттеры, сделанные с использованием @property (nonatomic, retain) NSMutableData *recievedData
, которые добавят дополнительно + 1.
Чтобы решить эту проблему, подойдет любая из этих двух (неавтоматическая версия лучше всего подходит для iphone).
NSMutableData *recievedData = [[NSMutableData alloc] initWithCapacity:[response expectedContentLength]];
self.recievedData = recievedData;
[recievedData release]; recievedData= nil;
// or the autoreleased version
self.recievedData = [NSMutableData dataWithCapacity:[response expectedContentLength]];
Дополнительно я бы позвонил
self.recievedData = nil;
вместо
[self.recievedData release];
Поскольку это кажется немного безопаснее, и вы используете сеттер, который является хорошей практикой, чтобы войти в него.