在objective-c中,内存的引用计数一直是一个让人比较头疼的问题。尤其是当引用计数涉及到arc、blocks等等的时候。似乎ARC的出现只是让我们解放了双手,由于底层实现依然依赖引用计数,所以开启ARC后,只有对引用计数机制更加了解,才能避免Cycle Retain、Crash等问题的出现。
但是由于使用ARC可以显著提高编码效率,所以建议尽量启用arc,本文内容也将以arc为主,...
分类:
其他好文 时间:
2014-06-20 12:55:02
阅读次数:
259
一般都是开启arc功能,毕竟不需要自己手动去释放,是一件比较轻松的事情。但是我们在引用第三方的时候,基本上都是带release与retain的方法,这个时候代码编译就通不过可以设置部分文件不使用arc,这样就可以兼容了。步骤:加入第三方库时候选择1.单击项目,在builde
phases 中,com...
分类:
其他好文 时间:
2014-06-16 07:48:58
阅读次数:
188
参考文献:iOS ARC
完全指南提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是"本地变量"一、简介ARC是自iOS
5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理...
分类:
其他好文 时间:
2014-06-10 12:48:41
阅读次数:
236
1 child->retain();//引用计数+12 3
child->removeFromParent(); 4 5 root->addChild();6 7 child->release();
//引用计数-1需要注意的是retain()和release(),如果在卸载节点前不调用retain...
分类:
其他好文 时间:
2014-06-10 08:48:48
阅读次数:
231
iOS中单例模式的实现一般分为两种:MRC和ARC+GCD 1.MRC(非ARC)
非ARC的单例的实现方式: #import @interface
NoARCSingleton:NSObject//这个属性在后面调试有用处,而且也不要苦恼为什么是retain?不应该是copy么?请继续看...
分类:
移动开发 时间:
2014-06-10 08:25:25
阅读次数:
390
1.栈放局部变量(代码结束就释放,系统自动回收)堆放对象(动态分配)2.每个对象里分配4个字节的存储空间放 引用计数器
当引用计数器值为0时对象占用的内存自动被回收自动回收,引用计数器的初始值是1.3.retain 引用计数器+1
release引用计数器-14.可以给对象发送(调用)retain....
分类:
移动开发 时间:
2014-06-09 18:39:06
阅读次数:
304
1、block引用局部变量的时候,该变量会作为常量编码到block中,在block中不能被修改。2、使用
__block修饰的局部变量,不会作为常量被编码到block中,故而在block中可以被修改。3、在block中引用一个局部的Objective-C对象的时候,该对象会被retain。4、如果不...
分类:
其他好文 时间:
2014-06-04 19:01:45
阅读次数:
224
UILabel:常用属性@property(nonatomic,copy) NSString
*text; // default is nil@property(nonatomic,retain) UIFont *font; // default
is...
分类:
移动开发 时间:
2014-06-02 00:03:51
阅读次数:
432
//1.对象在完成创建的同时,内部会自动创建一个引用计数器,这个计数器,是系统用来判断是否回收对象的唯一依据,当我们的引用计数retainCount
= 0的时候,系统会毫不犹豫回收当前对象//2.[对象 release] reatinCount - 1//3.[对象 retain] reatin....
分类:
其他好文 时间:
2014-05-28 18:43:14
阅读次数:
258
前文我们已经说了内存管理的原则:只要出现了new alloc retain
,就一定会配对出现一个release,autorelease那么当我一个对象被释放之后,如果我们再次调用这个对象的方法(包括这个对象的retain
release方法),将会出现 野指针 错误,在xcode中具体表现为EXC...
分类:
其他好文 时间:
2014-05-28 17:05:55
阅读次数:
259