一、什么是Block?Block 是将函数及其执行上下文封装起来的对象。比如:通过clang-rewrite-objcWYTest.m 命令编译该.m文件,发现该block 被编译成这个形式:其中WYTest 是文件名,blockTest 是方法名,这些可以忽略。其中WYTestblockTest_block_impl_0 结构体为--block_impl 结构体为block内部有isa指针,所以说其本质也是OC 对象block 内部则为:所以说 Block 是将函数及其执行上下文封装起来的对象既然block 内部封装了函数,那么它同样也有参数和返回值。二、Block变量截获1、局部变量截获是
一、数据结构集合结构线性结构树形结构图形结构1.1、集合结构说白了就是一个集合,就是一个圆圈中有很多个元素,元素与元素之间没有任何关系这个很简单1.2、线性结构说白了就是一个条线上站着很多个人。这条线不一定是直的。也可以是弯的。也可以是值的相当于一条线被分成了好几段的样子(发挥你的想象力)。线性结构是一对一的关系1.3、树形结构说白了做开发的肯定或多或少的知道 xml 解析树形结构跟他非常类似。也可以想象成一个金字塔。树形结构是一对多的关系1.4、图形结构这个就比较复杂了。他呢无穷。无边无向(没有方向)图形机构你可以理解为多对多类似于我们人的交集关系数据结构的存储数据结构的存储一般常用的有两种
一、数据结构集合结构线性结构树形结构图形结构1.1、集合结构说白了就是一个集合,就是一个圆圈中有很多个元素,元素与元素之间没有任何关系这个很简单1.2、线性结构说白了就是一个条线上站着很多个人。这条线不一定是直的。也可以是弯的。也可以是值的相当于一条线被分成了好几段的样子(发挥你的想象力)。线性结构是一对一的关系1.3、树形结构说白了做开发的肯定或多或少的知道 xml 解析树形结构跟他非常类似。也可以想象成一个金字塔。树形结构是一对多的关系1.4、图形结构这个就比较复杂了。他呢无穷。无边无向(没有方向)图形机构你可以理解为多对多类似于我们人的交集关系数据结构的存储数据结构的存储一般常用的有两种
一、进程、线程进程:· 1.进程是一个具有一定独立功能的程序关于某次数据集合的一次运行活动,它是操作系统分配资源的基本单元.· 2.进程是指在系统中正在运行的一个应用程序,就是一段程序的执行过程,我们可以理解为手机上的一个app.· 3.每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内,拥有独立运行所需的全部资源线程· 1.程序执行流的最小单元,线程是进程中的一个实体.· 2.一个进程要想执行任务,必须至少有一条线程.应用程序启动的时候,系统会默认开启一条线程,也就是主线程进程和线程的关系· 1.线程是进程的执行单元,进程的所有任务都在线程中执行· 2.线程是CPU分配资源和调
一、进程、线程进程:· 1.进程是一个具有一定独立功能的程序关于某次数据集合的一次运行活动,它是操作系统分配资源的基本单元.· 2.进程是指在系统中正在运行的一个应用程序,就是一段程序的执行过程,我们可以理解为手机上的一个app.· 3.每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内,拥有独立运行所需的全部资源线程· 1.程序执行流的最小单元,线程是进程中的一个实体.· 2.一个进程要想执行任务,必须至少有一条线程.应用程序启动的时候,系统会默认开启一条线程,也就是主线程进程和线程的关系· 1.线程是进程的执行单元,进程的所有任务都在线程中执行· 2.线程是CPU分配资源和调
一、在 Obj-C中,如何检测内存泄漏?你知道哪些方式?目前我知道的方式有以下几种·MemoryLeaks·Alloctions·Analyse·DebugMemoryGraph·MLeaksFinder泄露的内存主要有以下两种:·Laek Memory这种是忘记 Release操作所泄露的内存。·Abandon Memory这种是循环引用,无法释放掉的内存。上面所说的五种方式,其实前四种都比较麻烦,需要不断地调试运行,第五种是腾讯阅读团队出品,效果好一些二、在MRC下如何重写属性的Setter和Getter_.mdsettergetter重写dealloc三、循环引用循环引用的实质:多个对
一、在 Obj-C中,如何检测内存泄漏?你知道哪些方式?目前我知道的方式有以下几种·MemoryLeaks·Alloctions·Analyse·DebugMemoryGraph·MLeaksFinder泄露的内存主要有以下两种:·Laek Memory这种是忘记 Release操作所泄露的内存。·Abandon Memory这种是循环引用,无法释放掉的内存。上面所说的五种方式,其实前四种都比较麻烦,需要不断地调试运行,第五种是腾讯阅读团队出品,效果好一些二、在MRC下如何重写属性的Setter和Getter_.mdsettergetter重写dealloc三、循环引用循环引用的实质:多个对
在性能优化中一个最具参考价值的属性是FPS:FramesPerSecond,其实就是屏幕刷新率,苹果的iphone推荐的刷新率是60Hz,也就是说GPU每秒钟刷新屏幕60次,这每刷新一次就是一帧frame,FPS也就是每秒钟刷新多少帧画面。静止不变的页面FPS值是0,这个值是没有参考意义的,只有当页面在执行动画或者滑动的时候,FPS值才具有参考价值,FPS值的大小体现了页面的流畅程度高低,当低于45的时候卡顿会比较明显。图层混合:每一个layer是一个纹理,所有的纹理都以某种方式堆叠在彼此的顶部。对于屏幕上的每一个像素,GPU需要算出怎么混合这些纹理来得到像素RGB的值。当Sa=0.5时,RG
在性能优化中一个最具参考价值的属性是FPS:FramesPerSecond,其实就是屏幕刷新率,苹果的iphone推荐的刷新率是60Hz,也就是说GPU每秒钟刷新屏幕60次,这每刷新一次就是一帧frame,FPS也就是每秒钟刷新多少帧画面。静止不变的页面FPS值是0,这个值是没有参考意义的,只有当页面在执行动画或者滑动的时候,FPS值才具有参考价值,FPS值的大小体现了页面的流畅程度高低,当低于45的时候卡顿会比较明显。图层混合:每一个layer是一个纹理,所有的纹理都以某种方式堆叠在彼此的顶部。对于屏幕上的每一个像素,GPU需要算出怎么混合这些纹理来得到像素RGB的值。当Sa=0.5时,RG
#一、objc对象的isa的指针指向什么?有什么作用?指向他的类对象,从而可以找到对象上的方法详解:下图很好的描述了对象,类,元类之间的关系:图中实线是super_class指针,虚线是isa指针。1. Root class (class)其实就是NSObject,NSObject 是没有超类的,所以Root class(class)的superclass指向nil。2. 每个Class 都有一个isa 指针指向唯一的Meta class3. Root class(meta)的superclass 指向Root class(class),也就是NSObject,形成一个回路。4. 每个Meta