iOS开发-PHAsset转UIImage坑点

这篇具有很好参考价值的文章主要介绍了iOS开发-PHAsset转UIImage坑点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

  • 我们在做社区服务app时必不可少的是要做独立的发布器,发布器中需要本地图片选择时,我们会找一些系统的方法去转换,有涉及到PHAsset转换成UIImage的地方,比如使用PHImageManager.default().requestImage(for:PHAsset,特别是在app上线之后,看到各种配置的手机,有时候会遇到莫名的崩溃

探索

/// PHPAsset转UIImage
    private func getImageFromAsset(asset: PHAsset) -> UIImage {
        let manager = PHImageManager.default()
        let option = PHImageRequestOptions()
        option.isNetworkAccessAllowed  = true
        var image = UIImage()
        option.isSynchronous = true
        //方法一:使用此requestImage方法会存在的问题-转化完成后,获得的image对象,图片很大时极易导致app崩溃(因为requestImageForAsset会对图片渲染,大图时导致内存暴涨)
        // target: CGSize(width: 100, height: 100) 固定大小-> PHImageManagerMaximumSize  原始大小
        manager.requestImage(for: asset, targetSize: PHImageManagerMaximumSize, contentMode: .aspectFit, options: option, resultHandler: { (result, info) -> Void in
            if let success = result {
                image = success
            }
        })
        //方法二:此方法吧PHAsset转化为data对象,我们再使用data对象转化为image,(直接返回二进制数据,避免内存暴涨)
        manager.requestImageData(for: asset, options: option) { (imgData, str, imgOri, dic) in
            if let imgData = imgData {
                image = UIImage(data: imgData) ?? UIImage()
            }
        }
        return image
    }

总结

  • 1,其实对于iOS中app端崩溃了解这些崩溃及底层逻辑可更快定位问题
  • 2,对应用层面更多的表现为:越界,early release,double free,内存管理不当等
  • iOS开发这么些年一直没去整理过这些东西,现在静下心来开始去整理,后续会持续更新,如果内容有用感谢点赞,如有问题欢迎评论留言

文章来源地址https://www.toymoban.com/news/detail-655245.html

到了这里,关于iOS开发-PHAsset转UIImage坑点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ios 刘海屏,灵动岛的适配以及遇到一些坑点

    最近再改公司内部移动端 ios 安全区域适配的问题,所谓知己知彼百战百胜,所以深入的学习了一下 安全区域适配有关的知识 头部标题区域被灵动岛遮挡,标题被遮挡,返回按钮点不到 底部被遮挡 看一下官方对安全区域[1]的定义。 视图中未被导航栏、选项卡栏、工具栏或视

    2024年02月04日
    浏览(57)
  • 移动应用开发介绍及iOS方向学习路线(HUT移动组版)

    ​ 作为一个HUT移动组待了一坤年(两年半)多的老人,在这里为还在考虑进哪个组的萌新们以及将来进组的新朋友提供一份关于移动应用开发介绍以及学习路线的白话文,因为我是iOS方向的,所以学习路线就只介绍iOS了,希望这篇文章对你了解移动应用开发有帮助。 ​ 从字

    2024年02月04日
    浏览(29)
  • Unity开发——移动端实用特性使用(安卓/IOS)

    如何让屏幕保持常亮?如何获取手机当前电量?如何…? 接下来列举一些实用特性和方法: 1.防止屏幕休眠,从而让屏幕保持常亮 SleepTimeout.NeverSleep是一个特殊的值,它会禁止屏幕进入休眠状态,因此屏幕会保持常亮。 注意,这个设置可能会导致用户的电池电量消耗增加 ,

    2024年02月15日
    浏览(27)
  • 如何开发移动应用:iOS和Android的比较

    移动应用开发领域一直以来都备受关注,而iOS和Android作为两大主要的移动操作系统,各自拥有强大的生态系统和开发工具。在本文中,我们将比较iOS和Android移动应用开发的关键方面,以帮助开发者选择合适的平台,或者了解在不同平台上开发应用时需要考虑的因素。 iOS iO

    2024年02月07日
    浏览(40)
  • 移动开发最佳实践:为 Android 和 iOS 构建成功应用的策略

    您可以将本文作为指南,确保您的应用程序符合可行的最重要标准。请注意,这份清单远非详尽无遗;您可以加以利用,并添加一些自己的见解。 要制作一个成功的应用程序,你需要了解你是为谁制作的。从创建用户角色开始–基于人口统计、行为模式、动机和目标,对理想

    2024年02月13日
    浏览(33)
  • 云计算基础——云计算与移动互联网、物联网

    移动互联网的发展概况 移动互联网 是指以宽带IP为技术核心,可同时提供语音、数据、多媒体等业务服务的开什么是移动互联网?放式基础电信网络,从用户行为角度来看,移动互联网广义上是指用户可以使用手机、笔记,通过无线移动网络和HTTP协议接入互联网:狭义上是指用

    2024年02月01日
    浏览(43)
  • 互联网八大技术岗位解析:前端+后端+移动+测试+大数据+管理等

    互联网史上最全技术岗位详解,包括:前端研发、后端研发、移动端研发、大数据、项目管理、测试、运维、技术管理等。 架构师 每个产品线都有架构师,在技术平台部门也需要技术平台的架构师。 架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握

    2024年02月05日
    浏览(40)
  • 《菅销在移动互联网时代》智慧树知到章节测试答案

    智慧树知到《营销在移动互联网时代》2019章节测试答案 2019年11月22日 智慧树知到《营销在移动互联网时代》2019章节测试答案 第1章 单元测试 1、关于自媒体时代,克莱.舍基的三本著作有? 答案:未来是湿的:无组织的组织力量、认知盈余:无组织的时间力量、人人时代:无

    2024年02月09日
    浏览(42)
  • 智能终端安全:应用安全技术—移动互联网信息安全解决方案(下)

    手机作为一个随身可移动的信息承载终端,面临着各种不同使用场景,灵活的可配置的信息安全策略和稳妥可靠的管理非常必要, 需要提供必要的云端安全管控能力。 此处提到的云端安全管控平台, 包括运营商针对移动互联网需求的网络安全设计和运营商安全能力开放、可

    2024年02月05日
    浏览(49)
  • 智能终端安全:应用安全技术—移动互联网信息安全解决方案(上)

    移动互联网智能终端信息安全是一个整体的系统性课题,从技术角度来看,涉及到 终端硬件架构、内核和终端操作系统、应用等各个层面 。 同时,信息安全又是和用户自身需求紧密相关的需求驱动型课题,从用户角度来看,公众用户可能更关心通信安全和费用、反病毒和防

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包