摘要:
读博客总结: https://yq.aliyun.com/articles/3065 https://luchengzhong.github.io/gitblog/2018/06/12/iOS-%E5%86%85%E6%A0%B8-%E6%BA%90%E7%A0%81%E8%A7%A3%E8%AF% 阅读全文
摘要:
https://juejin.im/post/5d396ef7518825453b605afa 我的理解: 第一步:hit-testing找到:hit-test view/window,保存在哪里呢?找到响应者链/响应者链中的view链,保存在哪里呢?第二步:第一个touch:(1)touch 初始 阅读全文
摘要:
方法派发方式 方法派发方式的意思就是:怎么找到方法的app运行时,方法会被存在内存中的某处,只要能找到方法的地址,就可以执行这个方法,所以也就是怎么找到方法地址的方式 在swift中,却有3种:直接派发:就是在编译时,调用某个方法的话,就直接把这个方法的地址也进去了,这是没有任何动态性可言的,但它是 阅读全文
摘要:
为什么需要runloop 一般来说线程是做完事情,就生命结束了,给它续命的办法就是让它 sleep,runloop 也是这样干的 runloop能处理的事情分为4种: source0:自定义事件源 source1:基于port的事件源 timer:定时器 block:GCD 分配的任务 解释下 so 阅读全文
摘要:
不知道大家有没有这样的疑问,参数被使用前,肯定都被 retain 了,那为什么还会因为提前释放而闪退呢? 看汇编经验: 查看栈:x/nxg, n是个数,rbp是栈里面地址最大的,所以要减去栈的长度,才能看到整个栈的数据 https://www.jianshu.com/p/1005ccfe8fea 模 阅读全文
摘要:
一、写在前面:重写setter和getter的缺点: 1. 没有必要 2. 代码可读性大大降低 3. 容易造成逻辑混乱,引起意想不到的问题 二、没有必要 例子1: 使用重写get方法的方式初始化数据 对于现在的处理器,这样做没有任何意义,并且需要写更多的代码,占更多的行数,这些在阅读代码时会造成一定 阅读全文
摘要:
在我之前的项目中,存取数据使用的都是NSCoding方式,这样做避免了复杂的数据库操作,也造成了我数据库使用的困难。 最近做的一个项目中,大量的使用到数据库操作,涨姿势了,记录一下。 一、使用惯例: (1)使用FMDB第三方库管理数据库 (2)不需要事务时,使用inDatabase (3)需要使用事 阅读全文
摘要:
多应用自动打包 前言 网上很多文章都是陈词滥调,老黄历啦,在XCode多次更新后,那些脚本,那些命令已经不管用啦。 本文是基于XCode8.3版本的。 需求描述 要求做一个工具,可以批量打上百个应用,这些应用有不同的icon,启动图,bundleID,第三方账号,和其他一些业务相关的差异。 做起来~ 阅读全文
摘要:
一段文字中包含多种语言时行间距问题 问题描述 如上图1,中英文混合在一起,造成第三行前后的行间距不同。 我的猜测 不同字体的descender和ascender不同造成的,我猜测如果使用baseline相同的字体,是不是就可以避免这个问题了。 如下图,是我使用黑体的结果:由于黑体既支持英文字母,又支 阅读全文
摘要:
这篇博客的初衷 我是负责一个阅读app的阅读器部分的,碰到过很多问题,每次想在网上找到成熟的解决方案时,都没有,没有,没有。。。网上的几乎都是demo,demo的问题就是考虑的问题不够全面,所以demo的方法我是用不了的。 因为深知痛苦,所以决定写出来我们应用中的方案,当然如果能达到抛砖引玉的效果就 阅读全文