导语:

CJMethodLog 对于Objective-C中的任意类、任意方法,均可实时根据用户的操作行为,监控还原对应的函数调用日志,而且能够自定义记录当前函数的参数类型、返回类型、执行时间……

CJMethodLog

上一篇介绍了 Runtime 原理
CJMethodLog(一)Runtime原理:从监控还原APP运行的每一行代码说起
这里就来讲讲 CJMethodLog 的具体实现。

阅读全文 »

导语:

CJMethodLog 对于Objective-C中的任意类、任意方法,均可实时根据用户的操作行为,监控还原对应的函数调用日志,而且能够自定义记录当前函数的参数类型、返回类型、执行时间……

背景说明

是否遇到过如此场景:对于项目中一些不是Crash的问题,由于缺乏log日志,排查起来很是麻烦;又或者对于一些特定设备、特定场景的问题,由于缺乏条件没法重现,最后只能不了了之。比如下面的例子:

阅读全文 »

本文重点关注的是APNS推送后台的搭建,不涉及推送证书Certificate 、Profiles 文件,iOS客户端推送代码的介绍。

需求背景

iOS开发,在接收到APNS推送消息后打开App,然后跳转到App内任意模块、或者打开webView页面、或者执行升级操作、或者跳转打开第三方应用。

阅读全文 »

最近有好一段时间没有整理博客了,也不是因为忙,就是太懒。或者说程序员都自带懒属性😅,表现在对于一些机械性重复性的工作,宁愿一次性多花些精力去封装、去写出各种各样的工具来替自己干活,也不愿意多次重复劳动(就算那是很简单的工作)。这不我结合最近的工作,研究着写了两份Shell脚本,一是关于Xcode脚本打包,还有一个是关于crash log解析(这个将在另一篇文章说明)。

阅读全文 »

开发中需要获取设备的唯一标识符,以便用于应用统计或者产品的推广,这是很常见的开发需求。然而很遗憾,傲娇的苹果很是注重用户的隐私保护,随着系统的升级,各种能够获取设备标识符的方法要不被禁止了,要不就是很多限制条件。

阅读全文 »

项目中遇到的需求,需要自定义UITextView,实现以下功能:

  • 添加placeHold提示,类似UITextField的placeholder默认提示,并根据输入文字自动提示;
  • UITextView高度可根据输入内容动态调整,当超出maxHeight时,高度不再增加;
  • 输入时可插入不可编辑的自定义文本(如 #主题#@人名 ),类似微信输入时候的@人名,插入的文本要有不同颜色显示,并且插入文本不可编辑,删除时候则统一删除。
阅读全文 »