1、提交代码时难免会有疏忽的时候,敲错单词,写错提交的描述,导致commit的信息错误或者不满意。2、好在Git提供了改正错误的机会,我算个粗心人,所以这个方法会经常用到😏 ...
1、提交代码时难免会有疏忽的时候,敲错单词,写错提交的描述,导致commit的信息错误或者不满意。2、好在Git提供了改正错误的机会,我算个粗心人,所以这个方法会经常用到😏 ...
作为开发人员,经常需要存取文件、归解挡操作。模拟器沙盒路径可以通过下面方式获取: 由于当前开发的是一个音视频项目,必须用真机调试。真机的沙盒文件如何查看? 1.Xcode导航...
矩阵数据类型CV_ (S|U|F)C<number_of_channels>S = 符号整型 U = 无符号整型 F = 浮点型 1--bit_depth---比特数---代...
RunLoop RunLoop是iOS、OSX开发中非常基础的一个概念,这篇文章将会从源码的角度分析RunLoop的概念已经底层实现原理。在iOS中,苹果如何利用RunLoo...
苹果内存管理方案主要为MRC和ARC TaggedPointer:小对象类型,NSDate、NSNumber等NonpointerIsa:非指针型isa散列表:引用计数表,弱...
冷启动和热启动当用户按下home键时,iOS的APP不会立马被kill掉,还会存活一段时间,在这个时间之内,用户再进入APP,APP几乎不需要做什么,就可以还原到退出时的状态...
LLVM概述 LLVM是架构编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link...
block在我们的代码中经常使用,通过block我们实现了高内聚、低耦合,极大的方便了我们的编程,今天我们探究一下block的底层原理。 什么是block? block是将函...
看了这么多的源码,相信大家对锁已经见得很多了。在iOS中有8大锁,他们的性能如下: 下面我们将会分析锁的底层原理,看看锁的性能为什么有好有坏?在这之前,我们需要先了解一些名词...
单例dispatch_once 搜索dispatch_once(dis 传入两个参数,onceToken和block,调用dispatch_once_f传入三个参数,由blo...
用来探索的源码为libdispatch-1173.60.1 创建队列 从dispatch_queue_create开始1. dispatch_queue_create 搜索d...
简介 GCD全称Drand Central Dispatch 纯c语言,提供了非常多强大的函数 什么是GCD? 将任务添加到队列,并且指定执行任务的函数 GCD的优势: GC...
线程和进程 进程: 进程是指系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存空间内。 通过活动监视器可以查看Mac系统中所开启的进程...
在iOS开发中经常会涉及到内存,内存主要分为五个区:栈区、堆区、全局区、常量区、代码区 栈区(stack) 栈是由编译器来进行分配和释放的,用于存储临时变量、函数的参数、局部...
概述 KVO全程KeyValueObserving,是苹果提供的一套键值观察机制,它可以在对象指定属性发生改变时接到通知。 基础使用 KVO使用分为三个步骤:1.通过addO...
工作中经常会使用到KVC,但是对KVC的原理并不是十分清楚,比如它在底层是如何进行存取的,今天我们来探究一下。 KVC全称是Key Value Coding,定义在NSKey...
相信大家对Method-Swizzling并不陌生,今天我们来聊一聊Method-Swizzling的一些坑点和优化。 简单使用 接着我们在类中调用lg_methodSwiz...
1.关联对象需要释放吗?答:不需要,对象dealloc的时候已经帮我们移除关联对象了。 当对象has_assoc关联的时候,会走下面的object_dispose 走objc...
类别和类拓展 1.category:类别 分类 专门用来给类添加新的方法 不能给类添加成员变量,添加了也无法取到 分类中使用了@property给类添加属性,只会生成sett...
category 1、category的本质 今天我们先从category讲起,那到底什么是category,我们借助clang看一下它在底层的结构。代码还是上一章的代码,添...