https://bawn.github.io/BawnA minimal, responsive and feature-rich Jekyll theme for technical writing. 2023-06-01T15:54:51+08:00 Ling chen https://bawn.github.io/ Jekyll © 2023 Ling chen /assets/img/favicons/favicon.ico /assets/img/favicons/favicon-96x96.png 字节跳动旗下产品简单分析2019-04-23T00:00:00+08:00 2019-04-23T00:00:00+08:00 https://bawn.github.io/posts/Bytedance/ Ling chen 这篇文章主要通过Reveal、AppSight、ipa包三方面简单的分析字条跳动旗下几款比较有代表性的产品。首先基本信息如下: 产品 版本 主要开发语言 第三方库 Interface Builder 今日头条 7.1.7 objc AppSight Storyboard 皮皮虾 1.7.2 objc AppSight / 抖音 5.8.0 objc AppSight Storyboard(Launch Screen) 飞书 ... 关于嵌套滚动现实的讨论2019-02-26T00:00:00+08:00 2023-05-23T17:01:33+08:00 https://bawn.github.io/posts/NestedScrolling/ Ling chen 本文要讨论的是类似于即刻、淘票票首页,抖音、简书个人主页这样的嵌套滚动效果,事实上网上已经有很多的相关的文章,比如: 嵌套UIScrollview的滑动冲突解决方案 iOS 嵌套UIScrollview的滑动冲突另一种解决方案 多层 UIScrollView 嵌套滚动解决方案 而且绝大多数的文章都是从如何解决手势冲突出发给出相应的解决方案,原因是他们大多数都采用了三级 Scrollview 的解决方案,如下图 蓝色视图:一级 ScrollView 红色视图:HeaderView 绿色视图:MenuView 橘色视图:二级 ScrollView 黑色、深黑、浅黑:三级 ScrollView 可以看到三级... 关于埋点2019-01-11T00:00:00+08:00 2019-01-11T00:00:00+08:00 https://bawn.github.io/posts/Statistics/ Ling chen 这篇文章主要介绍在本人在公司项目上埋点实现的一些心得,在项目早期我们完全依赖于第三方的无痕埋点技术,客户端开发人员只需要做一些简单的工作就能满足 BI 部门对数据的需求。但随着业务增长,对数据的准确性和精细化的要求越来越高,之后不得不转向手动埋点(基于神策)。 很多时候我们需要根据具体业务来选择适合的埋点方案,在 火球买手 这个项目上 BI 部门对埋点数据要求可以总结为一句话:『从哪里来到哪里去』,比如在 Timeline 中点击一篇文章进入详情页,那么 Timeline 就是『从哪里来』,详情页就是『到哪里去』,当然『从哪里来』不只需要一个维度定位,有时候需要两三个维度才能定位。 下面举一些具体的例子,首先『频道主页』是项目中比较常见的页面,它对应的 Model 是 Channel,然后当任何点击进入的频道主页的事件触发后都需要上报以下数据 { module_name... 关于图片的一些知识点2018-12-26T00:00:00+08:00 2018-12-26T00:00:00+08:00 https://bawn.github.io/posts/AboutImage/ Ling chen 如果说之前的项目中哪个 bug 让我记忆犹新,我会毫不犹豫的说是内存溢出(OOM),因为当时无论从 dSYM 还是第三方的报错信息中我都找不出问题是所在,而且开发过程中也极少遇到,现在知道当时遇到的是高分辨率的图片集中渲染导致的 OOM 问题。 内存溢出从字面上就很好理解,传统意义上的 OOM 就是当前使用的 App 达到了 “high water mark”,也就是达到了系统对单个 App 的内存限制,系统会把这个应用杀掉(由 Jetsam 执行)。简单的说完关于 OOM 的知识点,接下来是本文要探讨一些关于图片渲染的一些知识点。 现在大家都应该知道图片从读取到最终渲染都会经历解压的过程,大致过程如下(图片来自于Image and Graphics Best Practices) Decode 过程简单说就是把图片转化成 Bitmap,那么 Bitmap 具体是什么? ... Range-面向协议编程2018-11-13T00:00:00+08:00 2018-11-13T00:00:00+08:00 https://bawn.github.io/posts/Range/ Ling chen 本文主要讲解 Range 家族类的一些实现细节和 Swift 中面向协议编程的一些具体表现。为了方便起见,无论是 class 或者 struct 都统称为『类』。 基本介绍 在 Swift 4.0 之前 Range 家族一共有 4 种类型: let rang: Range = 0.0..<1.0 // 半开区间 let closedRange: ClosedRange = 0.0...1.0 // 闭区间 let countableRange: CountableRange = 0..<1 // Countable 半开区间 let countableClosedRange: CountableClosedRange = 0...1 // Countable 闭区间 之后 Swift 4.0 上新增了 4 种类型: let partialRangeThro...