移除KVO的风险
2024-08-29 11:07:11
为之前项目添加一个功能用到了一个开源库XMTextView,然后运行报错提示:
显示没有注册一个叫font的观察者,所以闪退。但是我的UITextView没有添加观察者呀,怎么会删除呢?
原来是由分类引起的,看下XMTextView中的分类:
分类中交换了方法,那么所有的UITextView在释放时都要调用swizzleDealloc方法,而swizzleDealloc方法直接删除font观察,那么对于一个没有添加font的观察者的话就会crash。因此在移除时要么判断是否已经释放,要么捕捉异常不要让程序闪退,基于这个思路网上有多种解决方案:
https://www.jianshu.com/p/6c6f3a24b1ef
最新文章
- Linux中MySQL的基本操作
- 配置 nginx server 出现nginx: [emerg] ";root"; directive is duplicate in /etc/nginx/server/blogs.conf:7
- java script小结
- iOS开发之NSTimer使用初探
- ovs-agent流程
- Qt隐藏标题栏
- 深入浅出ES6(九):学习Babel和Broccoli,马上就用ES6
- Matlab中Rand()函数用法
- Linux 关于解压
- while循环学习之统计流量
- 【 js 基础 】关于this
- Kubernetes系列之Helm介绍篇
- 微信小程序开发-窗体设置
- FPGA Asynchronous FIFO设计思路
- #WEB安全基础:HTML/CSS | 0x0 我的第一个网页
- TensorFlow 运行模型--会话(Session)
- System.Data.SqlClient.SqlException:“对象名 'customer' 无效。";
- 缩点+染色+DFS codeforce467D
- 精美的HTML5/CSS3表单 带小图标
- PHP学习心得1