iOS:如何从url(ipcam)中检索jpg图像并将其显示为视频

时间:2015-02-25 11:11:00

标签: ios objective-c

我想为iOS创建一种ip cam viewer。 我们的想法是在一个循环内的特定Url上从ipcam中检索jpg图像;结果将是ip cam的视频。

我已尝试使用NSURLConnection,但遇到NSURLConnection的内存泄漏。我在另一个线程中运行NSURLCOnnection,似乎每个检索到的图像都存储在内存中的某个位置,导致应用程序崩溃一段时间后的情况。

是否有任何解决方案迫使NSURLConnection不缓存每个后映图像? 或者是否有可能为每个检索到的图像分配一个特定的内存空间? 或者是否有另一种可能从Url检索图像并在UIImageView内显示它而没有内存泄漏(可能是一个特殊的框架)?

我很乐意提出任何建议。

2 个答案:

答案 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,它没有正确清除依赖关系。

也许有人对我提出建议?