objective-c 内存自动释放(1)
来源:互联网 发布:金克丝神龙烈焰淘宝 编辑:程序博客网 时间:2024/05/17 22:11
例子1:
- (NSString *)fullName {
NSString *result;
result = [[NSString alloc] initWithFormat:@“%@ %@”,firstName, lastName];
return result;
}
上面的例子result对象会产生内存泄露。
例子2:
- (NSString *)fullName {
NSString *result;
result = [[NSString alloc] initWithFormat:@“%@ %@”,firstName, lastName];
[result release]
return result;
}
[result releaes]由于过早释放运行会出错
例子3:
- (NSString *)fullName {
NSString *result;
result = [[NSString alloc] initWithFormat:@“%@ %@”,firstName, lastName];
[result autorelease]
return result;
}
使用autorelease,当对象不再使用后自动释放,尤其适合返回临时对象中
Objective-C中某些类返回的是自动释放对象,如NSMutableString *string = [NSMutableString string];
对于该string就是自动释放对象,无需调用releaes释放.
自动释放的原理就是有个autorelease POOL自动释放池,当对象调用了autorelease后,则该对象就放入该池中。
当该POOL释放时,就会调用池中的对象release实现释放资源。
对于autorelease对象,同样可以使用retain,但记住必须使用release与其对应
另外autorelease不是垃圾收集,其与JAVA和C#的垃圾收集是不同的,objective-c是没有垃圾收集功能。
- (NSString *)fullName {
NSString *result;
result = [[NSString alloc] initWithFormat:@“%@ %@”,firstName, lastName];
return result;
}
上面的例子result对象会产生内存泄露。
例子2:
- (NSString *)fullName {
NSString *result;
result = [[NSString alloc] initWithFormat:@“%@ %@”,firstName, lastName];
[result release]
return result;
}
[result releaes]由于过早释放运行会出错
例子3:
- (NSString *)fullName {
NSString *result;
result = [[NSString alloc] initWithFormat:@“%@ %@”,firstName, lastName];
[result autorelease]
return result;
}
使用autorelease,当对象不再使用后自动释放,尤其适合返回临时对象中
Objective-C中某些类返回的是自动释放对象,如NSMutableString *string = [NSMutableString string];
对于该string就是自动释放对象,无需调用releaes释放.
自动释放的原理就是有个autorelease POOL自动释放池,当对象调用了autorelease后,则该对象就放入该池中。
当该POOL释放时,就会调用池中的对象release实现释放资源。
对于autorelease对象,同样可以使用retain,但记住必须使用release与其对应
另外autorelease不是垃圾收集,其与JAVA和C#的垃圾收集是不同的,objective-c是没有垃圾收集功能。
- objective-c 内存自动释放(1)
- Objective-C内存管理第五弹:自动释放池
- Objective c 自动释放池
- iOS学习(十一)Objective-C 自动释放池
- 深入理解Objective-C: Autorelease Pool (自动释放池)
- objective-C 自动释放池(autorelease pool)
- Objective-C Autorelease Pools(自动释放池)
- Objective-C自动释放池AutoreleasePool详解
- 【Objective-C基础】自动释放池
- objective-C 的内存管理之-自动释放池(autorelease pool)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- Objective-C(十六、内存管理,自动释放池,ARC,强指针,弱指针,方法族)——iOS开发基础
- Objective-c自学笔记(5)-自动释放池
- socket服务器端(c++)
- OpenCV 卡尔曼滤波器的使用
- oracle group by
- 大端小端问题
- 输入输出流中 InputStream read方法 和 OutputStream write 方法的理解
- objective-c 内存自动释放(1)
- 谈谈android数据存储方式
- linux内核机制中的中断
- chapter05--车辆,乡村用水,一元二次方程的根,电视频道
- iOS7 uilabel 自动换行,文字自适应
- 快速搭建Android NDK环境
- 应用360云盘与SVN版本管理服务器搭建基于云端的版本控制软件
- cout << (a += a -= a*a)和cout << a += a -= a*a
- VisualStudio开发工具中的C#主流控件属性及事件汇总(菜鸟必备)