自动释放池autoreleasepool
2015-07-30 11:32
253 查看
对象存入到自动释放池中,当这个池子被销毁的时候,他都会对池子中的所有的对象进行一次release操作
1:怎么把对象存到池子中
//自动释放池,大括号代表池子的作用域,可以自己随意创建
//只有在自动释放池的作用域中调用对象的autorelease方法才能够正确地将对象放入到池子中
@autoreleasepool{
Person *p = [Person alloc]init]; //不管这个对象是在autorelease之内创建的,还是在之外创建的,只要你在池子中调 用了autorelease方法,这个对象就会被放入到池子中
[p autorelease];//autorelease的方法的作用只是将对象放入到池子中,然后返回一个self,并不会使retainCount-1。 autorelease的方法必须在池子中,一个对象只能加入一次。
对象加入到哪个autoreleasepoll,就在哪个autoreleasepool结束后retainCount-1
}//代表池子将要被销毁,对池子中的所有的对象进行一次release操作
2:autorelease应用
》1:如果在方法中创建一个对象,最好初始化为nil,防止出现野指针错误,如
-(Food *)chiefMakeFood
{
//1
Food *food = nil;//可写成 Food *food = [Food alloc]init];
//0
//[food release];//会发生野指针错误
[food autorelease];//
return food;
}
》2:给外界提供一个快速获得当前对象 的快捷方法,是类方法
+(Chief *)chief
{
Chief *chi = [[self alloc]init]; //self:谁调用就指向谁
[ chi autorelease];
return chi;
}
在 @autoreleasepool{
Chief *chi = [Chief chief];
Food *food = [chi
chiefMakeFood];
}
NSString *name = [NSString stringWithFormat:"%@",@"啦啦啦"];//都是autorelease
1:怎么把对象存到池子中
//自动释放池,大括号代表池子的作用域,可以自己随意创建
//只有在自动释放池的作用域中调用对象的autorelease方法才能够正确地将对象放入到池子中
@autoreleasepool{
Person *p = [Person alloc]init]; //不管这个对象是在autorelease之内创建的,还是在之外创建的,只要你在池子中调 用了autorelease方法,这个对象就会被放入到池子中
[p autorelease];//autorelease的方法的作用只是将对象放入到池子中,然后返回一个self,并不会使retainCount-1。 autorelease的方法必须在池子中,一个对象只能加入一次。
对象加入到哪个autoreleasepoll,就在哪个autoreleasepool结束后retainCount-1
}//代表池子将要被销毁,对池子中的所有的对象进行一次release操作
2:autorelease应用
》1:如果在方法中创建一个对象,最好初始化为nil,防止出现野指针错误,如
-(Food *)chiefMakeFood
{
//1
Food *food = nil;//可写成 Food *food = [Food alloc]init];
//0
//[food release];//会发生野指针错误
[food autorelease];//
return food;
}
》2:给外界提供一个快速获得当前对象 的快捷方法,是类方法
+(Chief *)chief
{
Chief *chi = [[self alloc]init]; //self:谁调用就指向谁
[ chi autorelease];
return chi;
}
在 @autoreleasepool{
Chief *chi = [Chief chief];
Food *food = [chi
chiefMakeFood];
}
NSString *name = [NSString stringWithFormat:"%@",@"啦啦啦"];//都是autorelease
相关文章推荐
- Python动态类型的学习---引用的理解
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 土人系列AS入门教程 -- 对象篇
- C#托管堆对象实例包含内容分析
- javascript asp教程第十一课--Application 对象
- PowerShell中使用Out-String命令把对象转换成字符串输出的例子
- VBS教程:对象-正则表达式(RegExp)对象
- C#检查指定对象是否存在于ArrayList集合中的方法
- sql2008启动代理未将对象应用到实例解决方案
- php中将一个对象保存到Session中的方法
- php对象和数组相互转换的方法
- PHP中把对象转换为关联数组代码分享
- C#写入对象或集合类型数据到xml文件的方法
- C#利用反射来判断对象是否包含某个属性的实现方法