本期概要
- Tips:关于低电量模式的一些介绍。
- 面试模块:Objective-C 的消息机制(下)。
- 优秀博客:整理了几篇 Swift Tips 的文章。
- 学习资料:gitmoji:一个 GitHub 提交信息的 emoji 指南😎。
- 开发工具:能够使用 Swift 开发安卓应用的工具:SCADE;可视化解析
.ndjson
文件的工具:Privacy-Insight。
本期话题
@zhangferry:本期访谈内容独立成篇了,大家可以查看本期公众号推送的次条,或者访问这个链接人物访谈--微软Offer之路
本期摸鱼周报迎来一位新伙伴:东坡肘子。肘子之前因为身体原因修养过一段时间,也因为身体的原因需要做健康记录,但并没有找到满意的记录方式,于是决定自己开发,由此结缘 iOS 做起了独立开发。之后我们还会对他进行一次访谈,带大家了解他的更多故事,大家也可以关注他的博客:肘子的 Swift 记事本 https://www.fatbobman.com/。
开发Tips
整理编辑:夏天
低电量模式
从 iOS 9 开始,Apple 为 iPhone 添加了低电量模式(Low Power Mode)。用户可以在 设置 -> 电池 启用低电量模式。在低电量模式下,iOS 通过制定某些节能措施来延长电池寿命,包括但不限于以下措施:
- 降低 CPU 和 GPU 性能,降低屏幕刷新率
- 包括联网在内的主动或后台活动都将被暂停
- 降低屏幕亮度
- 减少设备的自动锁定时间
- 邮件无法自动获取,陀螺仪及指南针等动态效果将被减弱,动态屏保将会失效
- 对于支持 5G 的 iPhone 设备来说,其 5G 能力将被限制,除非你在观看流媒体
上述节能措施是否会影响到你的应用程序,如果有的话,你可能需要针对低电量模式来适当采取某些措施。
lowPowerModeEnabled
我们可以通过 NSProcessInfo 来获取我们想要的进程信息。这个线程安全的单例类可以为开发人员提供与当前进程相关的各种信息。
一个值得注意的点是,NSProcessInfo 将尝试将环境变量和命令行参数解释为 Unicode,以 UTF-8 字符串返回。如果该进程无法成功转换为 Unicode 或随后的 C 字符串转换失败的话 —— 该进程将被忽略。
当然,我们还是需要关注于低电量模式的标志,一个表示设备是否启用了低电量模式的布尔值 —— lowPowerModeEnabled
。
swift if NSProcessInfo.processInfo().lowPowerModeEnabled { // 当前用户启用低电量模式 } else { // 当前用户未启用低电量模式 }
NSProcessInfoPowerStateDidChangeNotification
为了更好的响应电量模式的切换——当电池充电到 80% 时将退出低电量模式,Apple 为我们提供了一个全局的通知NSProcessInfoPowerStateDidChangeNotification
。
```swift NSNotificationCenter.defaultCenter().addObserver( self, selector: "yourMethodName:", name: NSProcessInfoPowerStateDidChangeNotification, object: ni