与佳期的个人博客

登白薠兮骋望,与佳期兮夕张。


  • 首页

  • 归档

  • 分类

  • 关于

  • 搜索

Crash 防护方案(五):KVO

发表于 2019-07-07 | 分类于 iOS
Apple 使用了 isa 混写(isa-swizzling)来实现 KVO 。当观察对象 A 时,KVO 机制动态创建一个新的名为:NSKVONotifying_A 的新类,该类继承自对象 A 的本类,Apple 还重写了该类的 -class 方法,返回父类,即对象 A 的本类。且 KVO 为 N ...
阅读全文 »

Crash 防护方案(四):NSTimer

发表于 2019-07-07 | 分类于 iOS
12345+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget ...
阅读全文 »

Crash 防护方案(三):Container (NSArray、NSDictionary、NSNumber etc.)

发表于 2019-07-07 | 分类于 iOS
数组越界这类的 Crash 是最简单的也是最容易出现,业务开发过程中很可能操作某个 NSArray 类型的对象时忘记判空或者忘记长度判断而造成数组越界崩溃。所以最好是在线上环境接入这类的 Crash 防护。当然,在开发环境下最好不要接入,避免纵容开发者出现这类遗忘判断的错误。 这类崩溃的防护方案无非 ...
阅读全文 »

Crash 防护方案(二):EXC_BAD_ACCESS

发表于 2019-07-06 | 分类于 iOS
大家都知道,向业已回收的对象发送消息是不安全的。这么做有时可以,有时不行。具体可行与否,完全取决于对象所占内存有没有为其他内容所覆写。而这块内存有没有移作他用,又无法确定,因此,应用程序只是偶尔崩溃。在没有崩溃的情况下,那块内存可能只复用了其中一部分,所以对象中的某些二进制数据依然有效。还有一种可 ...
阅读全文 »

Crash 防护方案(一):Unrecognized Selector

发表于 2019-07-06 | 分类于 iOS
线上 APP Crash 是比较严重的问题,既影响用户体验又不利于程序猿们的 KPI,我们应当尽量避免线上 Crash 的出现,所以希望在 APP 发生 Crash 的时候能够实现自动防护,虽然我们的手段可能会导致业务逻辑的出错,但我们可以通过记录 Crash,上报堆栈来及时解决问题,也比用户 AP ...
阅读全文 »

组件化解耦方案

发表于 2019-06-13 | 分类于 iOS
现在有些规模的工程大概都是实行组件化开发吧,将基础库,业务库划分成单独模块,以 Pod 的形式集成到 APP 中。其中组件化开发一个不可避免的问题就是解耦,本篇博客大概会总结一些现在常用的解耦方案。 首先,整个工程应该分为两个部分,基础库和业务库,而组件化解耦应该主要针对的是业务模块。将相似度比较高 ...
阅读全文 »

一探 mas_updateConstraints 究竟

发表于 2019-01-18 | 分类于 iOS
Masonry 的链式编程对 iOS UI 添加约束简直好用的不得了,想必在使用上大家也都早已烂熟于心。只是对我来讲很早之前就有个更新约束的问题要好好搞搞清楚,就是题目里的 mas_updateConstraints: 方法。在 View 初始化时会添加一系列约束控制布局,而随时更改约束来移动位置也 ...
阅读全文 »

Say Bye 2018

发表于 2018-12-17 | 分类于 Life
遇见十二月,又到了年终总结的时候,以去年为鉴,怕挨到月底还是没有时间写这份总结,所以开始提笔 回顾今年贫瘠的博客,对这样的技术输出真是羞愧难当,其实感觉有学到不少东西,尤其来到新公司,更是见识了很多东西,包括技术上的、团队上的、流程上的、开发效率上的等等等等,但好像还没有一个好的思路来记录这一切,大 ...
阅读全文 »

记环海南岛骑行

发表于 2018-10-11 | 分类于 Journey
终于,再次踏上了骑行的道路环海南岛,十一走起 关于出行,相比于上次的 青海湖骑行 又有了更多的经验。比如山地车的携带,虽然骑行目的地都有提供租车服务,但因为喜欢骑自己的车子所以都是自己带车子过去的。上次去青海湖是背车子过去的,累的要死。这次才发现,可以邮寄,也可以带上飞机。邮寄的话,发顺丰特惠,走物 ...
阅读全文 »

记一次git reset事故

发表于 2018-08-21 | 分类于 git
因为一次 git reset 操作回滚提交差点丢掉近一周的代码,而且还是明天就要提测的紧急项目,慌得一匹。。。 事故过程:1、从 branchA 分支的 commitA1 节点牵出一个 branchB 分支2、branchA 分支的 commitA1、commitA2 … commitAn 提交记录 ...
阅读全文 »
<1234…6>

52 日志
5 分类
GitHub Weibo Twitter
© 2023 与佳期
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4