关于autorelease的想法...

edgeperson 2012-03-05 09:49:34
自己刚开始学object-C开发,还处于理论阶段,看到了autorelease这个东西.
是说的是在释放自动变量池的时候才会释放池中的变量.

假设一个函数,通常看到的调用代码是

void Fun1()
{
NSAutoreleasePool *pool;
pool = [[NSAutoreleasePool alloc]init];
ClsA *A=[[ClsA alloc]init];
//A do sth...
[A autorelease];
[pool release];
return;
}

既然自动变量池是在release的时候才会释放资源,是否可以将代码改为;
void Fun2()
{
NSAutoreleasePool *pool;
pool = [[NSAutoreleasePool alloc]init];
ClsA *A=[[[ClsA alloc]init]autorelease];
//A do sth...
[pool release];
return;
}

如果在定义变量的时候都这样做了,岂不是能够更容易的避免内存泄露了?
但是没有看到过这种用法,why ?

求解...
...全文
200 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
princebanana 2012-03-06
  • 打赏
  • 举报
回复
两个写法一样的,只是多一行代码,与少一行代码。还有可能这样写,方便alloc与release或autoRelease对应好查找内存泄露
相奇 2012-03-05
  • 打赏
  • 举报
回复
你给的两个代码 用处没有区别。。。

autorelease只是一个标记,标识这个东西 会在释放池中自动释放

不需要自己去手动释放。。。
咸清 2012-03-05
  • 打赏
  • 举报
回复
LZ还是认真看看autoease的概念和适用情况吧。
这个属于基础的知识范畴,不建议讨论,也没有什么讨论的。
edgeperson 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ynwlgh 的回复:]

手动RELEASE比autorelease的性能要高。
[/Quote]

恩,我知道手动release的效率更高
我只是对于autoease的好奇.
为什么不在分配的时候直接autorelease了?
因为实际的release也是在代码的末尾才会进行的啊~
ynwlgh 2012-03-05
  • 打赏
  • 举报
回复
手动RELEASE比autorelease的性能要高。
Snake_Jay 2012-03-05
  • 打赏
  • 举报
回复
可以直接分配的时候autoRelease。
写法不一样而已,一样的,我有的时候就这样写的,这样写没什么错。
edgeperson 2012-03-05
  • 打赏
  • 举报
回复
因为就是觉得是一样的
然后,如果一条语句直接写的话,岂不是降低了很多忘了autorelease的可能?
只是搞不懂为什么在别人的代码里没有看到过这种写法?
在能用autorelease的地方
这种一条语句写的.有啥缺点没?

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧