大佬教程收集整理的这篇文章主要介绍了ios – 由于已知原因导致的内存压力终止,未知解决方案,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我将复制下面的代码块,但首先我将描述它正在做什么.
说明:
我有一个迭代浏览视频列表的for循环.对于每个视频,for循环增加包含滚动视图的大小,绘制标签和按钮(均与视频有关),并异步抓取视频的缩略图并将其放在按钮下方.
问题:
抓住缩略图部分就是问题所在.我不认为这是异步完成的事实是问题,因为我已经同步尝试并且终止仍然发生.当我注释掉抓取缩略图的代码(下面代码中的整个异步部分)时,应用程序不会崩溃.
代码:
for (int i = [_videoURLs count]-1; i >= 0 ; i--) { //increase the scrollview size //get BACkground image: dispatch_async(screenshotQueue,^{ AVURLAsset *as = [[AVURLAsset alloc] initWithURL:currentURL options:nil]; AVAssetImageGenerator *ima = [[AVAssetImageGenerator alloc] initWithAsset:as]; ima.appliesPreferredTrackTransform = YES; NSError *err = NULL; CMTime time = CMTimeMake(1,24); CGImageRef imgRef = [ima copyCGImageAtTime:time actualTime:NULL error:&err]; UIImage *thumbnail = [[UIImage alloc] initWithCGImage:imgRef]; dispatch_async(dispatch_get_main_queue(),^{ UIImageView *BACkgroundImage = [[UIImageView alloc]initWithFrame:buttonFrame]; BACkgroundImage.image = thumbnail; BACkgroundImage.layer.opacity = 0; [self.videoScrollView addSubview:BACkgroundImage]; [self.videoScrollView sendSubviewToBACk:BACkgroundImage]; [UIView animateWithDuration:0.5 delay:0.0 options: UIViewAnimationOptionCurveEaseInOut animations:^{ BACkgroundImage.layer.opacity = 1; } completion:^(BOOL finished){}]; }); }); //add title to the screen caps //draw the button }
我正在使用Xcode 5,在iOS 7的新设备上进行测试.我是自学成才的,所以我确信我已经找到了一些不良习惯,但我希望我错过了一些明显的东西.有经验的人会接受.
我已经尝试了相当数量的谷歌@L_489_14@和@L_489_14@堆栈溢出,并尝试查看诊断,日志和内存配置文件,以进一步隔离问题,无济于事.
任何帮助将不胜感激!
编辑:
如何重现错误:
>转到视频列表
>保留视频列表
>重复1 2 4或5次导致崩溃
步骤2.简单地从其超级视图中删除整个scrollView,然后重绘它.我知道每次回到视频列表都没有必要重新绘制视频列表,但我出于某种原因这样做,我不相信这是问题的根源(我可能是错的).
编辑2:
这是内存配置文件的图像:
以上是大佬教程为你收集整理的ios – 由于已知原因导致的内存压力终止,未知解决方案全部内容,希望文章能够帮你解决ios – 由于已知原因导致的内存压力终止,未知解决方案所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。