• 小红点解决方案思路分析

    Posted by : lon.y@qq.com on 2018年1月17日

    小红点(消息推送提醒)在现今的各个App中几乎无处不在,特别是内容的更新日渐频繁,大量的小红点被投放在各个业务入口。一般来说,小红点主要有三个应用场景: App有新添加的功能提醒用户使用 某一个已有的模块有功能上的更新 功能有内容的变化或业务上的提醒 常见的比如下图所示的QQ消息提示(红点为消息数目的提示), 朋友圈的新回复,店铺上架新品,最新优惠活动提醒等等。 思路分析 通常情况下,小红点不是孤立使用的,一项功能或业务的运营涉及多个层级多个入口,所以小红

    阅读全文...

  • iOS Crash 捕获及堆栈符号化思路剖析

    Posted by : lon.y@qq.com on 2017年9月1日

    最近在做 Crash 分析方面的工作,发现 iOS 的崩溃捕获和堆栈符号化虽然已经有很多资料可以参考,但是没有比较完善的成套解决方案,导致操作起来还是要踩很多坑,耽误了很多时间。所以想做一个总结,阐述 Crash 收集分析的整体思路和出坑指南,具体细节实现会给出相关参考资料。有了思路,实现也就 So Easy 啦。 崩溃捕获 对于崩溃捕获,以前在 移动端监控体系之技术原理剖析 中详细阐述过,并且给出了相应的 Demo,崩溃主要是由于 Mach 异常、Obj

    阅读全文...

  • 手把手教你发布自己的 cocoapods 开源库

    Posted by : lon.y@qq.com on 2017年8月23日

    发布自己的cocoapods开源库按照以下步骤,良心制作,包教包会!! 下面我会通过一个名为IFMMenu的项目来讲解一下整个过程。 1.写好代码,上传到github github上创建项目仓库的时候记得创建LICENSE(许可证/授权)文件,此文件必须要有。 github上创建项目仓库 2.将自己的项目打成tag 因为cocoapods是依赖tag版本的,所以必须打tag,以后再次更新只需要把你的项目打一个tag,然后修改.podspec文件中的版本接着

    阅读全文...

  • iOS 复制知识点总结

    Posted by : lon.y@qq.com on 2017年8月23日

    1、系统对象的复制 不管是集合类对象,还是非集合类对象,接收到copy和mutableCopy消息时,都遵循以下准则: copy返回immutable对象;所以,如果对copy返回值使用mutable对象接口就会crash; mutableCopy返回mutable对象; 下图详细阐述了NSString、NSMutableString、NSArray、NSMutableArray、NSDictionary、NSMutableDictionary分别调用co

    阅读全文...

  • iOS 社会化分享方案总结

    Posted by : lon.y@qq.com on 2017年8月23日

    一、系统原生 UIActivityViewController 优缺点 优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包 缺点:UI可定制性差,只能使用系统提供的固定样式,长相如下。分享的类型受限,只能分享text、url、image。 UIActivityViewController分享界面 使用: NSString *textToShare = @"要分享的文本内容"; UIImage *imageToShare = [UIImage

    阅读全文...

  • iOS 团队编程规范

    Posted by : lon.y@qq.com on 2017年8月23日

    前 言 需求是暂时的,只有变化才是永恒的,面向变化编程,而不是面向需求编程。 不要过分追求技巧,降低程序的可读性。 简洁的代码可以让bug无处藏身。要写出明显没有bug的代码,而不是没有明显bug的代码。 先把眼前的问题解决掉,解决好,再考虑将来的扩展问题。 一、命名规范 1、统一要求 含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释,使用全称,不使用缩写。 2、类名 大驼峰式命名:每个单词的首字母都采用大写字母 ==例:== MFHomeP

    阅读全文...

  • iOS监控:卡顿方案思考

    Posted by : lon.y@qq.com on 2017年7月29日

    前言 最近因为工作原因迁移到了北京,大致有两周时间。入职也大概有一周时间,工作内容与APM相关,包括改进与攻克新监控方案。虽然入职时间善短,但是庞大的用户量下,即便是不到百分之一的卡顿率仍然影响到了巨大的用户。如何改进现有的卡顿监控方案是目前我在思考的问题。 ANR 回顾市面上大多数的开源监控方案,大多采用ANR这种机制下的做法去实现卡顿的监控,进而进行堆栈信息的追溯采集等。ANR这种方案最大的优点在于采集数据的准确率很高,基本可以说一旦发现主线程被blo

    阅读全文...

  • 浅谈iOS Crash(2)

    Posted by : lon.y@qq.com on 2017年7月15日

    一、僵尸对象(Zombie Objects) 1、概述 僵尸对象:已经被释放掉的对象。一般来说,访问已经释放的对象或向它发消息会引起错误。因为指针指向的内存块认为你无权访问或它无法执行该消息,这时候内核会抛出一个异常( EXC ),表明你不能访问该存储区域(BAD ACCESS)。(EXC_BAD_ACCESS类型错误) 调试解决该类问题一般采用NSZombieEnabled(开启僵尸模式)。 2、使用NSZombieEnabled Xcode提供的NSZ

    阅读全文...

  • 浅谈iOS Crash(一)

    Posted by : lon.y@qq.com on 2017年7月15日

    一、捕获iOS Crash 1、设置异常断点并运行 设置异常断点.png 说明:设置Xcode异常断点后运行程序,发生Crash时,断点会定位到出错的代码行,但仅适用于开发阶段。线上APP的Crash还需要通过收集Crash机制来捕获Crash并记录在日志中。 2、Mach异常 和 Unix信号 iOS Crash发生时,先产生Mach异常(最底层的内核级异常),然后Mach异常在host层被ux_exception转换为相应的Unix信号,并通过thre

    阅读全文...

  • iOS 从0到1搭建高可用App框架(二)

    Posted by : lon.y@qq.com on 2017年7月15日

    前言: 本文是继《iOS 从0到1搭建高可用App框架》之后,通过项目实践以及同行交流思考总结出来的一些新的架构思想,但初心仍不变,目的为搭建高可用App框架,保持框架底层健壮的同时让代码更清晰,为后期顶层业务开发时,避免出现风格迥异的代码。 架构图: 架构图 效果图 思考: 一、面对一个版本迭代频繁,改版频率高的项目,如何设计才能避免代码越改越乱? 二、当业务极其复杂时,如果减轻VC的压力,让代码更清晰? 三、如何正确选择第三方框架?都需要考虑哪些因素?

    阅读全文...