最近在尝试序列化 SwiftUI,具体来说是把任意的 SwiftUI view 转化成一个 JSON 的模版。由于 SwiftUI 内部的属性都是不对外暴露的,所以只能在 runtime 通过反射(Mirror API)来强行获取内部的属性。例如,如果想保存 Text,就要通过这种方式来获取内部的 string。Swift Playground 和 LLDB 也是通过 Mirror 来在运行时展示对象内部的属性的。
就像 JavaScript 的 NPM,Python 的 pip,Java 的 Gradle,甚至 Ubuntu 的 apt-get 一样,我们在使用 Xcode 开发软件时也需要使用包管理工具。CocoaPods 就是这样的一款用 Ruby 编写第三方库依赖管理工具,每个 iOS Developer 都不会对它感到陌生。
当线上的 App 发生 crash 的时候,我们总能收集到 crash 报告。很多时候,只看 crash 报告的崩溃堆栈信息就能帮助我们定位到问题了。但要想获得更多的信息,有时候就不得不去反编译我们的程序。
在使用 CoreML 对图片进行识别时,有时模型需要接收特定格式的图片,这就需要我们先对图片做好处理,再传递给模型。比如,我在一个识别人脸面部表情的程序中,就需要先裁剪出人脸区域,做成适当大小的灰度图,再交给 MLModel 进行识别。
本文主要解决 UIScrollView 中自己添加的滑动手势与它本身自带的滑动手势冲突的问题。
Update your browser to view this website correctly. Update my browser now