摘要: 一、什么是闭包在 wikipedia 上,闭包的定义是:In programming languages, a closure is a function or reference to a function together with a referencing environment—a table storing a reference to each of the non-local va... 阅读全文
posted @ 2020-02-26 11:11 和风细羽 阅读(1185) 评论(0) 推荐(0) 编辑
摘要: 一、前言苹果在 WWDC2015 大会上引入了 bitcode,随后在 Xcode7 中添加了在二进制中嵌入 bitcode(Enable Bitcode) 的功能,并且默认设置为开启状态。在What is app thinning? (iOS, tvOS, watchOS)一节中有以下定义:Bitcode is an intermediate representation of a comp... 阅读全文
posted @ 2020-02-26 11:03 和风细羽 阅读(1664) 评论(0) 推荐(0) 编辑
摘要: 一、什么是自动释放池OC 中的一种内存自动回收机制,它可以延迟加入 AutoreleasePool 中的变量 release 的时机,即当我们创建了一个对象,并把它加入到了自动释放池中时,它不会立即被释放,会等到一次 runloop 结束或者作用域超出 {} 或者超出 [pool release] 之后再被释放。二、自动释放池的创建与销毁时机MRC:NSAutoreleasePool * pool... 阅读全文
posted @ 2020-02-26 10:59 和风细羽 阅读(226) 评论(0) 推荐(0) 编辑
摘要: atomic在set方法里加了锁,防止了多线程一直去写这个property,造成难以预计的数值。当属性使用atomic修饰时,它的读和写是原子性的:当线程A进行写操作,这时其他线程的读或者写操作会因为该操作而等待。当A线程的写操作结束后,B线程进行写操作,然后当A线程需要读操作时,获得了在B线程中修改的值。如果有C线程在A线程读操作之前release 了该属... 阅读全文
posted @ 2020-02-26 10:57 和风细羽 阅读(891) 评论(0) 推荐(0) 编辑
摘要: 当前 iOS App 的编译打包方式是把适配兼容多个设备的执行文件及资源文件合并一个文件,上传和下载的文件则包含了所有的这些文件,导致占用较多的存储空间。 App Thinning 是一个关于 的功能,它可以让 App Store 和操作系统在安装、更新及运行 iOS 或者 watchOS 的 Ap 阅读全文
posted @ 2020-02-25 23:55 和风细羽 阅读(1484) 评论(0) 推荐(0) 编辑
摘要: 一、简介 依赖注入可以通过初始化方法(或构造函数)传递所需要的参数,或者通过属性(setter)传递。这里将对这两种方法进行讲解。 初始化方法注入: 属性注入: 一般更趋向于初始化注入,如果在初始化(构造函数)的时候没办法进行注入,才通过属性进行注入。在通过初始化注入的情况下,这些依赖可能仍然需要作 阅读全文
posted @ 2020-02-25 23:54 和风细羽 阅读(616) 评论(0) 推荐(0) 编辑
摘要: 一、Off Screen Rendering 离屏渲染,指的是 GPU 在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。 离屏渲染的数量才是影响 app 交互性能的根源。 离屏渲染耗时是发生在离屏这个动作上面,而不是渲染。原因主要在于创建缓冲区和上下文切换。创建新的缓冲区代价都不算大,付出最大代价 阅读全文
posted @ 2020-02-25 23:50 和风细羽 阅读(849) 评论(0) 推荐(0) 编辑
摘要: APP 启动到执行 main 函数之前,程序就执行了很多代码。 执行顺序: 1. 将程序依赖的动态链接库加载到内存 2. 加载可执行文件中的所有符号,代码 runtime 解析被编译的符号代码 3. 遍历所有的 class 4. 按继承层级一次调用 Class 的 load 和 category 的 阅读全文
posted @ 2020-02-25 23:47 和风细羽 阅读(574) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-02-21 14:29 和风细羽 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-02-17 15:43 和风细羽 阅读(271) 评论(0) 推荐(0) 编辑