我想为iOS创建一种ip cam viewer。
我们的想法是在一个循环内的特定Url
上从ipcam中检索jpg图像;结果将是ip cam的视频。
我已尝试使用NSURLConnection
,但遇到NSURLConnection
的内存泄漏。我在另一个线程中运行NSURLCOnnection
,似乎每个检索到的图像都存储在内存中的某个位置,导致应用程序崩溃一段时间后的情况。
是否有任何解决方案迫使NSURLConnection
不缓存每个后映图像?
或者是否有可能为每个检索到的图像分配一个特定的内存空间?
或者是否有另一种可能从Url
检索图像并在UIImageView
内显示它而没有内存泄漏(可能是一个特殊的框架)?
我很乐意提出任何建议。
答案 0 :(得分:0)
也许你可以用刷新时间间隔做这样的事情:
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateImage) userInfo:nil repeats:YES];
并使用此方法更新图像视图
- (void)updateImage {
if (!isDownloading) {
isDownloading = YES;
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"imageUrl"]];
[request addValue:[NSString stringWithFormat:@"%f",[NSDate timeIntervalSinceReferenceDate]] forHTTPHeaderField:@"timestamp_preventCache"];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
isDownloading = NO;
if( data ){
dispatch_async(dispatch_get_main_queue(), ^{
self.imageView.image = [UIImage imageWithData:data];
});
}
}];
}
答案 1 :(得分:0)
大家好,我试过NSUrlSession。除了将配置更改为后台模式外,结果安装相同。 没有更多的内存泄漏,但单个请求太慢,意味着从我开始我的请求到我更新jpg的那一刻,有太多的延迟。当我更改为配置默认值或强调时,延迟不再存在,但是内存泄漏再次填满了内存。
我怀疑问题可能是ARC,它没有正确清除依赖关系。
也许有人对我提出建议?