У меня проблема с AFNetworking. Я запрашиваю много данных JSON с моего сервера через GET, используя это:
[[SessionResponseClient sharedClient] getPath:kURIRateList parameters:@{...} success:^(AFHTTPRequestOperation *operation, id JSON) {
[_delegate receivedRateResponse:JSON];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[_delegate receivedRateResponse:nil];
}];
Когда это вызывается около 10-20 раз, CFData, похоже, занимает большую часть используемой памяти моего приложения.
Использование памяти
Когда я исследую как CFData, так и CFData (хранилище), я получаю следующее:
CFData (хранить)
CFДанные
Примечание: мое приложение использует ARC, и все остальное работает нормально.
Теперь мой вопрос: поскольку я не видел нерешенных проблем на странице AFNetworking GitHub и почти никаких других жалоб на это в Интернете, что, черт возьми, я делаю неправильно? Кто-нибудь еще сталкивается с этой проблемой? или я один такой? Не могли бы вы опубликовать свой код, так как я не думаю, что мой код выглядит так неправильно...
Обновление 1
Код для интерфейса:
@protocol RateRequestsDelegate;
@interface RateRequests : NSObject {
id<RateRequestsDelegate> _delegate;
}
@property (nonatomic, strong) id<RateRequestsDelegate> delegate;
- (void)fetchRateList;
@end
@protocol RateRequestsDelegate <NSObject>
- (void)receivedRateResponse:(NSDictionary *)response;
@end
SessionResponseClient — это просто расширенный экземпляр AFHttpClient, как демонстрируют все примеры AFNetworking, см.: Взаимодействие с API
Код для ReceiveRateResponse:
- (void)receivedRateResponse:(NSDictionary *)json {
if (!json) {
return;
}
self.moviesToInsert = [NSMutableArray arrayWithArray:[json objectForKey:@"rated"]];
[self.tableView reloadData];
}
Обновление 2
Теперь я изменил функцию обратного вызова на блочную функцию вместо использования делегатов, и она немного улучшилась, но о ней почти не упоминается, и она также может быть вызвана просто побочным эффектом чего-то другого. Как вы, ребята, реализуете это? Попробуйте получить данные, отобразить их в виде таблицы или прокрутки, а затем много раз извлечь эти данные с сервера и обновить представления.
Большое спасибо! Павел
delegate
должен бытьweak
, а неstrong
. Эта проблема может быть вызвана циклом сохранения. - person Aaron Brager   schedule 03.06.2013strong
. - person Aaron Brager   schedule 04.06.2013