黑马程序员------ios培训 oc内存管理(二)
来源:互联网 发布:ubuntu下安装jdk 编辑:程序博客网 时间:2024/05/16 05:31
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一.autorelease::
1.autorelease简单接受
1.>autorelease方法返回值是本身。
2.>调用autorelease方法后对象计数器不变
3>autorelease调用后会将对象放到一个自动释放池中
4>当能够自动释放池销毁时会对池子中所有的对象进行一次release
2.autorelease方法的好处
1>不再关心对象释放的时间
2>不用关心对象什么时候release
3.autorelease 方法使用的注意点
1>占用内存较大的对象不要随意使用autorelease
2>对占用内存较小的对象有影响 但影响不大
4.autoelease错误写法
1>对自动释放池中的对象有进行一次release
例:
autorelease{Person *p = [[[Person alloc] init] autorelease];[p release];}
2>调用两次autorelease
autorelease{Person *p = [[[[Person alloc] init] autorelease] autorelease];}
5.自动释放池
1>在iOS程序中会创建无数个池子,这些池子都是以栈结构存在(先进后出)
2>当一个对象调用autorelease方法时会将这个对象放到栈顶的释放池
6.关于创建一些类方法
1.>系统中自带的方法里没有alloc 、new、copy说明返回的对象都是已经autorelease过了
2.>开发中经常会提供一些类方法,快速创建一个已经autorelease过的对象
例:
+ (id)person{return [[[self alloc] init ] autorelease];}
+ (id)personWithAge:(int)age{Person *p = [[[self alloc] init ] autorelease];p.age = age;return p;}二.ARC
1.ARC是一种编译器特性
2.关于指针
1>强指针:默认情况下所有的指针都是强指针
2>弱指针:"_weak"标示的指针
3.ARC的判断准则:只要没有强指针指向对象就会释放对象
4.ARC特点
1>不允许调用release retain retainCount
2>允许重写dealloc但不允许调用 [super dealloc];
3>property参数
*strong 成员变量是强指针(适用于oc对象)
*weak 成员变量是弱指针
*assign 适用于非oc对象
5.关于循环引用的问题在ARC特型中的解决方法:一端用strong,一端用weak
- 黑马程序员------ios培训 oc内存管理(二)
- 黑马程序员-----------ios培训 oc内存管理(一)
- 黑马程序员-----OC内存管理(二)
- 黑马程序员--OC--内存管理(二)
- 黑马程序员-IOS-OC基础-内存管理
- ios黑马程序员--oc内存管理
- 黑马程序员-IOS-OC基础-内存管理
- 黑马程序员----第七篇 OC内存管理(二)
- 黑马程序员——IOS基础(OC内存管理)
- 黑马程序员--------iOS培训 OC核心语法二
- 黑马程序员-----OC内存管理(一)
- 黑马程序员-----OC内存管理(三)
- 黑马程序员(OC内存管理)
- 黑马程序员--OC--内存管理(一)
- 黑马程序员 — OC(内存管理)
- 黑马程序员-OC-内存管理
- 黑马程序员--oc:内存管理
- [黑马程序员][OC]内存管理
- UVALive - 4287 Proving Equivalences (强连通分量)
- SpringMvc对静态资源的访问
- Android 深入解析AsyncTask(doInBackground不工作)
- iterator标签用begin属性报错:Attribute var invalid for tag iterator according to TLD
- NSThread创建多线程
- 黑马程序员------ios培训 oc内存管理(二)
- [openCV]图像的傅里叶频谱
- iOS多线程之Pthread/NSthread
- Cocos2d-x Lua中网格动作
- 图片连接效果的制作
- Android 竖直排列显示两个ListView
- Android edittext 显示字数限制和输入类型
- gdi/gdiplus如何加载字体
- idea中进行运行时报错:cannot start compilation the output path is not specified for module