iOS错误 - too many open files (error = 24)
2024-09-02 05:00:14
碰到这个错误是在用 UIImageView 显示图片的时候。UIImage 用的是 imageNamed 方法。错误原因是打开了太多的文件。应该是太多文件的打开导致了 UIImage 的 cache 被删除使得无法获取缓存了的图片。找了很久也没找到问题,因为 imageNamed 这个方法是会缓存图片的,也就是说不管多少 UIImageView 使用这个图片都不会造成额外的图片开销。
后来经过一番测试,恍然大悟。问题居然不来自 UIImage。原以为是程序中载入了太多的图片造成这个错误,但是测试中发现,只要不使用过多不同的图片是没有问题的。真正的杀手居然是我程序中的音频播放器。我的程序中播放器不断地播放音效,造成了太多文件的打开,从来导致了 UIImage 缓存被回收。
播放器的优化很简单,其实就是不要使用 AVAudioPlayer,而是要使用 AudioServices。
最新文章
- pinpoint 安装部署
- 【iOS】使用safari对webview进行调试
- Redis应用场景(转)
- cisco nat
- 函数mem_area_alloc
- FileSystemWatcher使用方法具体解释
- 通过一个正则表达式,让SQL Server数据库的带参sql也支持位置参数语法!
- SystemParametersInfo API学习(128个中文参数解释,215个实际值)
- [HNOI 2018]游戏
- webpack 笔记
- openstack之glance基础
- Python 循环与定义函数
- iOS 静态库代码混淆方案
- AndroidManifest中注册application
- Docker容器相互访问
- 多线程安全问题之Lock显示锁
- #001 Emmet的API图片
- 【AI in 美团】深度学习在文本领域的应用
- 每一个JavaScript开发者应该了解的浮点知识
- pyqt二进制和图片的转换
热门文章
- apache配置https和http的时候You don't have permission to access / on this server.
- linux中用date命令获取昨天、明天或多天前后的日期
- 通过HttpWebRequest实现模拟登陆
- SqlMapConfig.xml配置文件中的mapper映射器标签
- linux下mysql开启远程访问权限及防火墙开放3306端口(mysql开放host访问权限)
- PHP实现一维数组转二维数组的方法
- 解决 Windows 系统使用 Homestead 运行 Laravel 本地项目响应缓慢问题
- Java 设计模式系列(十三)模板方法
- css控制两个表格的边线重合
- Spring boot——logback.xml 配置详解(二)