- (CFRunLoopRef)getCFRunLoop;
获取相应的CFRunLoopRef类,来达到线程安全的目的。
Run loop的管理并不全然是自己主动的。
我们仍必须设计线程代码以在适当的时候启动run loop并正确响应输入事件,当然前提是线程中须要用到run loop。而且,我们还须要使用while/for语句来驱动run loop能够循环运行。以下的代码就成功驱动了一个run loop:
BOOL isRunning = NO;
do {
isRunning = [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDatedistantFuture]];
} while (isRunning);
Run loop同一时候也负责autorelease pool的创建和释放
在使用手动的内存管理方式的项目中,会经经常使用到非常多自己主动释放的对象,假设这些对象不能够被即时释放掉,会造成内存占用量急剧增大。
Run loop就为我们做了这样的工作,每当一个运行循环结束的时候,它都会释放一次autorelease pool,同一时候pool中的全部自己主动释放类型变量都会被释放掉。
Objective-c中提供了两种内存管理机制MRC(MannulReference Counting)和ARC(Automatic Reference Counting),分别提供对内存的手动和自己主动管理。来满足不同的需求。
Xcode 4.1及其曾经版本号没有ARC。
在MRC的内存管理模式下,与对变量的管理相关的方法有:retain,release和autorelease。
retain和release方法操作的是引用记数,当引用记数为零时。便自己主动释放内存。而且能够用NSAutoreleasePool对象,对加入自己主动释放池(autorelease调用)的变量进行管理,当drain时回收内存。
(1) retain,该方法的作用是将内存数据的全部权附给还有一指针变量。引用数加1,即retainCount+= 1;
(2) release,该方法是释放指针变量对内存数据的全部权,引用数减1,即retainCount-= 1;
(3) autorelease,该方法是将该对象内存的管理放到autoreleasepool中。
在ARC中与内存管理有关的标识符,能够分为变量标识符和属性标识符,对于变量默觉得__strong,而对于属性默觉得unsafe_unretained。也存在autoreleasepool。
当中assign/retain/copy与MRC下property的标识符意义同样,strong相似与retain,assign相似于unsafe_unretained,strong/weak/unsafe_unretained与ARC下变量标识符意义同样。仅仅是一个用于属性的标识,一个用于变量的标识(带两个下划短线__)。所列出的其它的标识符与MRC下意义同样。
进程。是并发运行的程序在运行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 仅仅与处理机的位数有关,一个 16 位好处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为 232 。进程至少有 5 种基本状态。它们是:初始态,运行态。等待状态,就绪状态,终止状态。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-76433-5.html
少讲话