如果在面试中问到RunLoop相关的知识,很有可能也会问到RunLoop与GCD.Autorelease Pool有没有关系,哪些地方用到了GCD.Autorelease Pool等. So,本文就总结一下RunLoop与GCD和 Autorelease Pool 之间的关系,看看在RunLoop实现中,哪些地方间接或者直接使用.操作到了GCD 和Autorelease Pool. RunLoop 与GCD 的关系 在RunLoop 中大量使用到了GCD,首先来看一下 CFRrunLoop.c…
- 1.1 字面意思   a 运行循环   b 跑圈   - 1.2 基本作用(作用重大)   a 保持程序的持续运行(ios程序因而能一直活着不会死)    b 处理app中的各种事件(比如触摸事件.定时器事件[NSTimer].selector事件[选择器·performSelector···])   c 节省CPU资源,提高程序性能,有事情就做事情,没事情就休息   - 1.3 重要说明    (1)如果没有Runloop,那么程序一启动就会退出,什么事情都做不了.    (2)如果有了R…
内存管理一直是学习 Objective-C 的重点和难点之一,尽管现在已经是 ARC 时代了,但是了解 Objective-C 的内存管理机制仍然是十分必要的.其中,弄清楚 autorelease 的原理更是重中之重,只有理解了 autorelease 的原理,我们才算是真正了解了 Objective-C 的内存管理机制.注:本文使用的 runtime 源码是当前的最新版本 objc4-646.tar.gz . autoreleased 对象什么时候释放 autorelease 本质上就是延迟调…
如果一个对象的生命周期显而易见,很容易就知道什么时候该new一个对象,什么时候不再需要使用,这种情况下,直接用手动的retain和release来判定其生死足矣.但是有些时候,想知道某个对象在什么时候不再使用并不那么容易.如果下面的代码,看上去非常简单: Sample.h类接口部分 #import < Foundation / Foundation.h > @interface Sample : NSObject {   }   -(NSString*) toString;   @end Sa…
参考博客: http://blog.leichunfeng.com/blog/2015/05/31/objective-c-autorelease-pool-implementation-principle/ 这一块和内存管理相关,只有理解了 autorelease 的原理,我们才算是真正了解了 Objective-C 的内存管理机制. 这里最重要的一点,是要理解一个autoreleased对象被alloc出来,其引用计数就是1.尽管没有其他对其强持有,也不会立即释放(之前说一个__weak一出…
Autorelease:可以延迟给对象发送release消息.发送一个autorelease消息给对象,证明该对象在一定时间内有效,一定时间后会对该对象进行释放,进行一次release. 一个autorelease pool就是一个NSAutorelease pool对象. 一个程序中所有的autorelease pool以栈的形式组织,新建的pool会被放在栈顶,当发送autorelease消息给autorelease时,该对象被放入位于栈顶的pool中,发送drain给pool时,pool中…
根据苹果官方文档中对 Using Autorelease Pool Blocks 的描述,我们知道在下面三种情况下是需要我们手动添加 autoreleasepool 的: 如果你编写的程序不是基于 UI 框架的,比如说命令行工具: 如果你编写的循环中创建了大量的临时对象: 如果你创建了一个辅助线程. Cocoa always expects code to be executed within an autorelease pool block, otherwise autoreleased o…
一.RunLoop的作用 一个应用开始运行以后放在那里,如果不对它进行任何操作,这个应用就像静止了一样,不会自发的有任何动作发生,但是如果我们点击界面上的一个按钮,这个时候就会有对应的按钮响应事件发生.给我们的感觉就像应用一直处于随时待命的状态,在没人操作的时候它一直在休息,在让它干活的时候,它就能立刻响应.其实,这就是run loop的功劳. 二.线程与runloop的关系 <1>线程任务的类型 线程的任务可以形象地分为: (1)直线型:执行一段任务之后,就被释放掉了. (2)环型:不断循环…
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html#//apple_ref/doc/uid/20000047-CJBFBEDI Using Autorelease Pool Blocks Autorelease pool blocks provide a mechanism whereby you can rel…
一个数据库服务器上可以装几个数据库它们都是用sid来标志,例如orcl1,orcl2,orcl3等等,一个数据库如orcl1中可以有多个实例吗? Oracle数据库,实际上应该是说,我们使用的是Oracle服务server. 来源:(http://blog.sina.com.cn/s/blog_4dc6402101009156.html) - oracle 数据库与实例的关系(转)_XW_普罗旺斯_S_新浪博客 Oracle服务server包括有两个部分: 一个部分是Oracle数据库datab…