自己刚开始学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 ?求解...
是说的是在释放自动变量池的时候才会释放池中的变量.假设一个函数,通常看到的调用代码是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 ?求解...
解决方案 »
- 为什么子uitextview的frame 输出 <UITextView: 0x91a4e00; frame = (0 0; 0 0)
- IOS 实现长时间的后台任务
- 如何将sinaweibo demo project 加入到 Three20UI中
- 问个关于多视图切换的问题,加载NIB 后失败
- UIImageView 与 UIImage
- 打开别人机器上创建的PhoneGap工程报错的问题
- 十分诡异的ARC内存泄漏
- IOS加载HTML5数据问题
- iOS 能将视频,音频,字幕三个文件合成一个视频吗? 求大神指点啊!!非常感谢!!
- 请教 ios c++socket问题
- 苹果 审核规范 发布周期
- 请问怎么在UITextFeild中插入所选表情对应的字符串到当前光标处?
恩,我知道手动release的效率更高
我只是对于autoease的好奇.
为什么不在分配的时候直接autorelease了?
因为实际的release也是在代码的末尾才会进行的啊~
这个属于基础的知识范畴,不建议讨论,也没有什么讨论的。
然后,如果一条语句直接写的话,岂不是降低了很多忘了autorelease的可能?
只是搞不懂为什么在别人的代码里没有看到过这种写法?
在能用autorelease的地方
这种一条语句写的.有啥缺点没?
写法不一样而已,一样的,我有的时候就这样写的,这样写没什么错。