SegmentFault 思否技术周刊 — 探究关于 iOS 的特性
业界
作者:SegmentFault
2023-01-14 17:13:41
阅读:806
本期技术周刊一起探究关于 iOS 的特性,欢迎大家阅读 ~
本文从 Tagged Pointer、objc 源码、dealloc 原理、AutoreleasePool 原理、野指针探究等技术点展开聊了聊 iOS 内存相关问题。一行代码解决 Scrollview 和 TextInput 焦点获取问题 - 知道问题在哪就有解决问题的方向了:点击列表项使输入框自动失去焦点,并触发onPress点击事件。
UITextField 输入长度限制时,中文输入法导致的输入问题 当我们有 UITextField 或者 UITextView 最大输入长度需求的时候,会面临一个问题,那就是如果我们使用系统输入法或者其他输入法的时候,在输入最后几个文字的时候,由于部分输入法会将拼音字母等高亮字符展示在输入框内,这时候输入长度就可能超过最大长度,从而导致最后几个文字输入失败,尽管这时候文字还没到最大输入长度。
首先,只有 ios11 才会出现,说明不是没有返回 html,从现象来看可以证实,页面上显示了标题,只是没有内容。通过抓包发现,确实有返回html。基本可以肯定,问题出现在浏览器这一层,也就是上图的红色部分。
抓包发现有返回 html,也返回了入口 js,也就是 app.xxx.js 和 chunk-vendors.xxx.js。有 js,但没内容,那有两种可能:- 入口js执行报错了,导致后面渲染页面的代码没有执行
发现问题:在上周一个将要下班的夜晚,测试突然和我打招呼,说IOS推送的修复更新上线后存在问题,后台报错。连忙跑到测试那里看报错详情,报错如下:
OptionSet 是 Swift 中比较常用的一个内置协议,它的存在算是填补了既要强类型,又要支持按位取与的空白,是对 OC 中 NS_OPTIONS 的桥接。从声明上可以看到,OptionSet 协议本身又服从 SetAlgebra 协议,后者只定义了常见的集合操作方法,如 union remove insert 等,而前者在 extension 中给了默认实现我们使用写时复制 copy on write 的思想,对 NSMutableData 进行封装,以此来理解我们的标准库的实现方式。标准库中提供的所有的基本集合类型都是值类型,通过写时复制的思想保证了他的高效性。集合类型是我们比较常用到的数据类型,所以了解他的性能特性很重要,我们来一起看一下写时复制是如何工作的,并且尝试自己手动实现一个。「技术周刊」是社区特别推出的技术内容系列,一周一主题。每周更新,欢迎「关注」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。
点击左下角阅读原文,到 SegmentFault 思否社区 和文章作者展开更多互动和交流,“公众号后台“回复“ 入群 ”即可加入我们的技术交流群,收获更多的技术文章~
延伸阅读
-
SegmentFault 思否写作挑战赛 是思否社区新上线的系列社区活动,在 2 月 8 日 正式面向社区所有用户开启;挑战赛中包含多个可供作者选择的热门技术方向,根据挑战难度分为多个等级,快来参与挑
-
Go 是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。本期技术周刊一起了解 Go,欢迎大家阅读 ~文章推荐Golang 如何优雅接入多个远程配置中心? 作者:王中
-
Git 的诞生是一个非常有趣的故事。1991年 Linus 开源了 Linux 内核,无数 Linux 爱好者在世界各地为 Linux 编写代码,那么问题来了,这些代码该如何管理呢?起初 Linus
*文章为作者独立观点,不代表 免费SSL 立场
原文链接 https://www.51uos.com/news/industry/5979.html