一:autorelease1> autorelease原理:将我们创建的对象放到一个对象释放池中(是一个栈区)当池子释放时,会将池子中的对象都做一次release操作(自动释放池存放在一个池子中,就近原则,符合先进后出)2>自动释放池的创建方式(1)ios5.0以前的创建方式NSAutoreleas...
分类:
其他好文 时间:
2014-11-10 23:16:43
阅读次数:
249
相比较NSOperation和NSThread,GCD提供了更简单的操作实现多线程,多线程下也无需创建自动释放池,而且GCD开发只有两个步骤1 创建队列2 提交任务到队列队列GCD创建的队列有两种,一种是串行队列,一种是并行队列,在串行队列中每次只执行一个任务,依次执行下去,而在并行队列中每次可以同...
分类:
移动开发 时间:
2014-11-09 16:33:50
阅读次数:
276
使用容器的block版本的枚举器时,内部会自动添加一个AutoreleasePool:Autorelease对象是在当前的runloop迭代结束时释放的,而它能够释放的原因是系统在每个runloop迭代中都加入了自动释放池Push和Pop当然,在普通for循环和for in循环中没有,所以,还是新版...
分类:
其他好文 时间:
2014-11-01 20:22:42
阅读次数:
208
内存管理机制引用计数:因为OC中不存在垃圾回收机制,所以才根据引用计数回收机制。当引用计数为0时,销毁空间。也就是说,根据引用计数来确定一个对象是否释放。可以改变引用计数的操作:allcoretainreleasecopydealloc便利构造器自动释放池:每次对象调用autorelease方法时(..
分类:
其他好文 时间:
2014-10-18 11:19:31
阅读次数:
120
在自动释放池@autoreleasepool{}中alloc一个对象后(如p1),仍然需要用[p1 autorelease];只是这个语句和[p1 release];不同,后者表示把p1的retainCount-1,而前者仅仅表示把p1放到自动释放池中返回一个self,自动释放池结束销毁时,统一对里面的对象引用计数retainCount-1。...
分类:
移动开发 时间:
2014-10-10 17:54:34
阅读次数:
233
1、自动释放池的工作原理。2、指针 指针的指针 指针数组3、设计模式 mvc 工厂模式4、多继承的代替方法(类别以及代理)5、堆栈6、OC优缺点7、面向对象思想以及程序设计8、应用程序设计 用户体验 流量 电量9、爱好、职业规划
分类:
其他好文 时间:
2014-09-18 16:18:14
阅读次数:
234
自动释放池中是否有虑重功能1 @autoreleasepool {2 UIView *view = [UIView alloc] init] autorelease];3 [view autorelease];4 }这样写在自动释放池的队列中是两个对象还是一个对象,就...
分类:
移动开发 时间:
2014-09-09 11:54:18
阅读次数:
226
第四章 内存管理NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init ]; [pool drain];事实上程序中可以有多个自动释放池。自动释放池其实并不包含实际的对象本身,仅仅是对释放的对 象的引用。通过向目前的自动释放池发送一条au...
分类:
移动开发 时间:
2014-08-29 18:13:08
阅读次数:
208
1.autorelease的基本用法1>会将对象放到一个自动释放池中2>当自动释放池被销毁时,会对池子里面的所有对象做一次release操作3>会返回对象本身4>调用完autorelease方法后,对象的计数器不变2.autorelease的好处1>不用再关心对象释放的时间2>不用再关心什么时候调用...
分类:
其他好文 时间:
2014-08-25 22:44:54
阅读次数:
293
内存管理中经常遇到的问题:内存泄露,内存溢出。
在cocos2dx中用的是引用计数和自动释放池的技术,由于熟悉objective-c语言,所以对这两个概念不会很陌生。
一、引用计数
引用计数是自动内存管理的基础:在对象里增加一个引用计数,当外部引用增加时,计数器加1,当外部引用消失时,计数器减1 。
看一下CCObject源码:
cl...
分类:
其他好文 时间:
2014-08-19 16:35:14
阅读次数:
163