iOS
文章平均质量分 93
water1307
这个作者很懒,什么都没留下…
展开
-
KVO原理及自定义KVO
首先我们先介绍KVO的底层实现原理:我们注册监听的时候,会对注册者动态的创建一个子类对象,然后底层寻找方法的isa指针就变成指向新创建的子类对象,当改变注册对象某个属性的时候,就重写属性的set方法来进行监听。这么说可能理解上不是很明白,下面我们结合代码来分析:我们常见一个Person对象是继承于NSObject,有一个name属性。我们把Person的类对象的name属性注册给ViewContr...原创 2018-06-20 18:26:15 · 177 阅读 · 0 评论 -
KVO和手动调用KVO
1、addObserver:forKeyPath:options:context:各个参数的作用分别是什么,observer中需要实现哪个方法才能获得KVO回调?// 添加键值观察/*1 观察者,负责处理监听事件的对象2 观察的属性3 观察的选项4 上下文*/[self.personaddObserver:selfforKeyPath:@"name"options:NSKe...原创 2018-06-20 19:17:55 · 2084 阅读 · 0 评论 -
iOS 设计模式:MVVM
MVVM(Model View View-Model):一种可以很好地解决Massive View Controller (臃肿的视图控制器)问题的办法就是将Controller中的展示逻辑抽取出来,放置到一个专门的地方,而这个地方就是 viewModel。MVVM衍生于MVC,是对MVC的一种演进,它促进了UI代码与业务逻辑的分离。它正式规范了视图和控制器耦合的性质,并引入新的组件。他们之间的结...原创 2018-06-21 23:28:00 · 155 阅读 · 0 评论 -
多线程-GCD
1、GCD好处GCD可用于多核的并行运算GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调度线程、销毁线程)程序员只需告诉GCD想要执行什么任务,不需要编写任何线程管理代码2、GCD任务和队列任务:就是执行操作的意思,换句话说就是你在线程中执行的那段代码,在GCD中放在block中的。执行任务有两种方式:同步执行(sync)、异步执行(async)。两者...原创 2018-06-20 14:17:32 · 595 阅读 · 1 评论 -
cmake找不到c、c++编译器
用cmake生成xcode项目时候,提示找不到 c和c++编译器,需要执行下面指令即可且当控制台无法使用gcc指令,也同样执行下面命令sudo xcode-select --switch /Applications/Xcode.app/...翻译 2018-07-23 15:33:01 · 5708 阅读 · 0 评论 -
iOS 组件化
将一个项目组件化拆分掉,一般会拆分一些基础组件、一些功能组件和业务组件。将拆分好的组件放在远程仓库,统一通过Cocoapods进行管理。当然,要实现这个管理的过程,有一些概念还是需要知道的。 远程索引库、本地索引库、远程代码库、本地代码库,通过category的基础组件说明这四个概念。 第一步:基础组件category 一、远程索引库...原创 2018-07-26 11:15:48 · 236 阅读 · 0 评论 -
LLVM介绍及OLLVM原理分析
为什么需要编译?计算机CPU只能读懂机器码(一堆0和1组成的编码),但是我们编写的代码并不是机器码,而是高级编程语言(OC、swift、Java、...),最终也可以被计算机所执行,这就需要编译了,在编译的过程中,编译器的作用便是把我们的高级汇编语言通过一系列的操作转化成可被计算机执行的机器语言。 什么是LLVM当前,LLVM已经发展成为被用于开发从编译器前端到后端的“一套模块及可...原创 2018-08-03 16:31:48 · 7671 阅读 · 2 评论