自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 LLVM介绍及OLLVM原理分析

为什么需要编译?计算机CPU只能读懂机器码(一堆0和1组成的编码),但是我们编写的代码并不是机器码,而是高级编程语言(OC、swift、Java、...),最终也可以被计算机所执行,这就需要编译了,在编译的过程中,编译器的作用便是把我们的高级汇编语言通过一系列的操作转化成可被计算机执行的机器语言。 什么是LLVM当前,LLVM已经发展成为被用于开发从编译器前端到后端的“一套模块及可...

2018-08-03 16:31:48 7215 2

原创 iOS 组件化

    将一个项目组件化拆分掉,一般会拆分一些基础组件、一些功能组件和业务组件。将拆分好的组件放在远程仓库,统一通过Cocoapods进行管理。当然,要实现这个管理的过程,有一些概念还是需要知道的。   远程索引库、本地索引库、远程代码库、本地代码库,通过category的基础组件说明这四个概念。 第一步:基础组件category 一、远程索引库...

2018-07-26 11:15:48 208

翻译 cmake找不到c、c++编译器

用cmake生成xcode项目时候,提示找不到 c和c++编译器,需要执行下面指令即可且当控制台无法使用gcc指令,也同样执行下面命令sudo xcode-select --switch /Applications/Xcode.app/...

2018-07-23 15:33:01 5553

原创 iOS 设计模式:MVVM

MVVM(Model View View-Model):一种可以很好地解决Massive View Controller (臃肿的视图控制器)问题的办法就是将Controller中的展示逻辑抽取出来,放置到一个专门的地方,而这个地方就是 viewModel。MVVM衍生于MVC,是对MVC的一种演进,它促进了UI代码与业务逻辑的分离。它正式规范了视图和控制器耦合的性质,并引入新的组件。他们之间的结...

2018-06-21 23:28:00 134

原创 iOS程序中的内存分配 栈区堆区全局区

在计算机系统中,运行的应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同。一、内存分区1、栈区(stack)由编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系统数据结构,对应线程/进程是唯一的。优点是快速高效,缺点是有限制,数据不灵活(先进先出)栈空间分静态分配和动态分配两种。 静态分配是编译器完成得,比如(auto)的分配。动态分配有alloc函数完成。栈的动态...

2018-06-20 20:58:56 357

原创 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 1996

原创 KVO原理及自定义KVO

首先我们先介绍KVO的底层实现原理:我们注册监听的时候,会对注册者动态的创建一个子类对象,然后底层寻找方法的isa指针就变成指向新创建的子类对象,当改变注册对象某个属性的时候,就重写属性的set方法来进行监听。这么说可能理解上不是很明白,下面我们结合代码来分析:我们常见一个Person对象是继承于NSObject,有一个name属性。我们把Person的类对象的name属性注册给ViewContr...

2018-06-20 18:26:15 156

原创 多线程-GCD

1、GCD好处GCD可用于多核的并行运算GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调度线程、销毁线程)程序员只需告诉GCD想要执行什么任务,不需要编写任何线程管理代码2、GCD任务和队列任务:就是执行操作的意思,换句话说就是你在线程中执行的那段代码,在GCD中放在block中的。执行任务有两种方式:同步执行(sync)、异步执行(async)。两者...

2018-06-20 14:17:32 163 1

原创 RunLoop

文章目录1.RunLoop简介    1.1 什么是RunLoop?    1.2 RunLoop和线程    1.3 默认情况下主线程的RunLoop原理2. RunLoop相关类    2.1 CFRunLoopRef    2.2 CFRunLoopModeRef    2.3 CFRunLoopTimeRef    2.4 CFRunLoopSourceRef    2.5 CFRunLo...

2018-06-18 00:01:22 287

关于LLVM、OLLVM.pdf

关于LLVM、OLLVM.pdf

2021-07-19

objective-c教程

2017-03-23

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除