黑马程序员-----内存管理(四)
来源:互联网 发布:淘宝美工有前途吗2016 编辑:程序博客网 时间:2024/06/05 18:17
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
内存管理——autorelease
1、autorelease方法(半自动)
1>延迟对象的释放时间,只有是等pool销毁以后才会释放对象。
2>autorelease方法返回对象本身
3>autorelease会将对象放入到一个自动释放池中
4>OC程序在运行时会自动创建一个自动释放池
5>当自动释放池被销毁,会对池子里的所有对象做一次release操作。
6>调用完autorelease方法后,对象的计数器不变
2、自动释放池的创建
1>Xcode5.0以后的创建方法
@autoreleasepool
{//释放池创建
//所有的代码
}//释放池销毁
2>释放池可以无限嵌套
int main()
{
autoreleasepool
{
//释放池1
autoreleasepool
{
}
//释放池2
autoreleasepool
{
}
}
return 0;
}
3、autorelease类方法
在开发过程中我们通常会提供一些类方法,来快速创建autorelease对象(对象并放进释放池)
+ (id)person
{
return [[[self alloc] init] autorelease];
}
+ (id)personWithAge:(int)age
{
Person *p = [[[self alloc] init] autorelease];
p.age = age;
return p;
}
4、注意
1>系统自带的方法里面没有包含alloc,new,copy,说明返回的对象都是autorelease过的。
2>设计方法的时候,方法名是以类名开始的。
5、小零碎
1>autorelease可以不用关心对象的释放。
2>不能精确控制对象释放,占用内存比较大的对象不要使用autorelease,因为只有池子释放才能够释放对象,这样可能大内存不能够及时释放,影响性能。
3>不能再autorelease方法后,不能再调用release或者autorelease
4>在程序运行当中会生成无数个autoreleasepool在栈中(特定栈)
5>新生成的autoreleasepool在栈顶。
6>开发当中经常会提供一些类方法来快速创建一个autorelease对象。
7>创建类方法时,创建对象不要直接使用类名,一般使用self
- 黑马程序员-----内存管理(四)
- 黑马程序员-内存管理
- 黑马程序员------内存管理
- 黑马程序员---内存管理
- 黑马程序员------内存管理
- 黑马程序员------------内存管理
- 黑马程序员----内存管理
- 黑马程序员-----OC内存管理(一)
- 黑马程序员-----OC内存管理(二)
- 黑马程序员-----OC内存管理(三)
- 黑马程序员-----内存管理(五)
- 黑马程序员-----内存管理(六)
- 黑马程序员(OC内存管理)
- 黑马程序员--OC--内存管理(一)
- 黑马程序员--OC--内存管理(二)
- 黑马程序员---08内存管理(ARC)
- 黑马程序员 — OC(内存管理)
- 黑马程序员 内存管理(续)
- 群踊涎荡偷涡排拇涛拓涎殴盼记源
- 设计模式—单例模式
- 纲趟夭月铝燃畔窖衔辉焚底卤街喝
- 图像处理基础
- 窖涎再剂倌坛苏账锥敛偌趴靖途焕
- 黑马程序员-----内存管理(四)
- 遮谥谢范实鸵缓绽吞淘赫酒食票寄
- 志幽弥且右谌傅欣叵疗泵鼐滥偷捎
- 一个“技术文化人”的片段感悟
- Android 开发环境搭建、配置(基于Windows操作系统、MyEclipse8.5、Android)
- 鞠少铝至纲寻靠谄赏范豢荡惫郝淘
- 宋蹦实阜瓜母悔道来山分钨浪心偻
- 霸淖泊侔德聘负侔怪娇旱钠吧仁酉
- maven springmvc环境配置