我在使用 AFNetworking 时遇到问题。我使用以下方法通过 GET 从我的服务器请求大量 JSON 数据:
[[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(存储)
CFData
旁注:我的应用程序正在使用 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 只是一个扩展的 AFHtttpClient 实例,正如所有 AFNetworking 示例所展示的,请参阅:与 API 交互
receivedRateResponse 的代码:
- (void)receivedRateResponse:(NSDictionary *)json {
if (!json) {
return;
}
self.moviesToInsert = [NSMutableArray arrayWithArray:[json objectForKey:@"rated"]];
[self.tableView reloadData];
}
更新 2
我现在将回调更改为基于块的函数而不是使用委托,并且它有所改进,但几乎没有提及,也可能是由其他东西的副作用引起的。你们如何实现这一点?尝试获取数据,将其显示在表格或滚动视图中,然后从服务器中多次提取这些数据并刷新视图
非常感谢!保罗