摘要:
前言 之前的文章有说过 原子操作的原理,其作为一个特殊的修饰前缀,影响了存取操作。 在属性修饰定义中,还有另一类修饰前缀,他们分别是 `weak assign copy`,这些又有什么区别呢? 平时喜欢探究的同学,可能也见过 ,这个又是什么呢? 让我们从属性修饰入手,逐步揭开弱引用的面纱。 原理 属 阅读全文
摘要:
前言 绝大部分 程序员使用属性时,都不太关注一个特殊的修饰前缀,一般都无脑的使用其非默认缺省的状态,他就是 。 入门教程中一般都建议使用非原子操作,因为新手大部分操作都在主线程,用不到线程安全的特性,大量使用还会降低执行效率。 那他到底怎么实现线程安全的呢?使用了哪种技术呢? 原理 属性的实现 首先 阅读全文
摘要:
背景 随着产品功能不断的迭代,总会有需求希望在保证不影响其他区域功能的前提下,在某一区域实现根据选择器切换不同的内容显示。 苹果并不推荐嵌套滚动视图,如果直接添加的话,就会出现下图这种情况,手势的冲突造成了体验上的悲剧。 在实际开发中,我也不断的在思考解决方案,经历了几次重构后,有了些改进的经验,因 阅读全文
摘要:
背景 随着博客越写越多,难免会遇到需要插入图片来说明的情况。 图床选择 首先调研了市面上的图床服务,本着稳定长期的目标,过滤掉了打一枪换一个地方的野鸡小网站,剩余比较靠谱的优缺点如下。 |图床|优点|缺点| | | | | |腾讯云|免费 无需域名|未来可能会收费| |七牛|免费|需要域名和备案| 阅读全文
摘要:
介绍 KVO( )是一种监测对象属性值变化的观察者模式机制。其特点是无需事先修改被观察者代码,利用 实现运行中修改某一实例达到目的,保证了未侵入性。 A对象指定观察B对象的属性后,当属性发生变更,A对象会收到通知,获取变更前以及变更的状态,从而做进一步处理。 在实际生产环境中,多用于应用层观察模型层 阅读全文
摘要:
背景 当我们打包app时,可以选择生成对应的符号表,其保存 16 进制函数地址映射信息,通过给定的函数起始地址和偏移量,可以对应函数具体信息以供分析。 所以我们拿到测试给的闪退日志( )时,需要找到打包时对应生成的符号表( )作为钥匙解析。具体分为下面几个步骤 1. 命令获取 的 2. 打开 文件, 阅读全文
摘要:
介绍 关联对象(AssociatedObject)是Objective C 2.0运行时的一个特性,允许开发者对已经存在的类在扩展中添加自定义的属性。在实际生产过程中,比较常用的方式是给分类(Category)添加成员变量。 例子 通过实现代码可以稍微分析下, 拿着不变的指针地址(示例传入selec 阅读全文
摘要:
背景 临上线前测试比较努力,遇到闪退或者其他问题,会把日志包打给我,由于app内存限制,目前每次打包都是1m大小,所以有时查找问题的上下文比较吃力。同时由于日志比较多,根据关键词过滤的需求越来越重要。 于是决定学写脚本完成这个任务,根据我的要求,工作流程应该是传入压缩包,根据后缀名解压,根据日期排序 阅读全文
摘要:
什么是Category? Category是Objective C 2.0之后添加的语言特性,Category的主要作用是为已经存在的类添加方法,一般称为分类,文件名格式是"NSObject+A.h"。 从结构能看出分类可以扩展实例方法列表、类方法列表、协议列表,也支持扩展属性,但不支持扩展成员变量 阅读全文
摘要:
前言 本文借鉴整理了iOS高级开发常见的面试题,并且分博客一一分析,希望能和大家一起进步学习。 欢迎大家关注我的 "Github" 👏以及相关博客 "Github.io" "简书" 大家的鼓励是我前进的动力😄 iOS基础题 1. 分类和扩展有什么区别?可以分别用来做什么?分类有哪些局限性?分类的 阅读全文