95,autorelease的注意事项
2015-12-17 12:28
169 查看
import <Foundation/Foundation.h>
@interface Person :
NSObject
@end
@implementation Person
@end
int main(int argc,const
char * argv[]) {
//1,不要再自动释放池中使用比较消耗内存的对象,占用内存比较大的对象
//2,尽量不要再自动释放池中使用循环,特别是循环的次数非常多,并且还非常内存
@autoreleasepool {
for (int i =0; i<=10000; i++) {
Person *p = [[[Personalloc]
init]autorelease];
}
}
//若需要使用循环,可以这样
for (int i =0; i<=10000; i++) {
@autoreleasepool {
Person *p = [[[Personalloc]
init]autorelease];
}
}
/*
3,一个程序中可以创建N个自动释放池,并且自动释放池可以嵌套
如果存在多个自动释放池的时候,自动释放池会以栈的形式存在
特点:先进后出
先创建,先进入栈里面,就在栈底,后创建,后进入栈里面,就在栈顶
*/
@autoreleasepool {//One:栈底
@autoreleasepool {//Two
@autoreleasepool {//Three:栈顶
//p1属于Three
Person *p1 = [[[Personalloc]
init]autorelease];
}
//p2是属于Two
Person *p2 = [[[Personalloc]
init]autorelease];
}
}
return 0;
}
@interface Person :
NSObject
@end
@implementation Person
@end
int main(int argc,const
char * argv[]) {
//1,不要再自动释放池中使用比较消耗内存的对象,占用内存比较大的对象
//2,尽量不要再自动释放池中使用循环,特别是循环的次数非常多,并且还非常内存
@autoreleasepool {
for (int i =0; i<=10000; i++) {
Person *p = [[[Personalloc]
init]autorelease];
}
}
//若需要使用循环,可以这样
for (int i =0; i<=10000; i++) {
@autoreleasepool {
Person *p = [[[Personalloc]
init]autorelease];
}
}
/*
3,一个程序中可以创建N个自动释放池,并且自动释放池可以嵌套
如果存在多个自动释放池的时候,自动释放池会以栈的形式存在
特点:先进后出
先创建,先进入栈里面,就在栈底,后创建,后进入栈里面,就在栈顶
*/
@autoreleasepool {//One:栈底
@autoreleasepool {//Two
@autoreleasepool {//Three:栈顶
//p1属于Three
Person *p1 = [[[Personalloc]
init]autorelease];
}
//p2是属于Two
Person *p2 = [[[Personalloc]
init]autorelease];
}
}
return 0;
}
相关文章推荐
- No important thing
- iOS工作小常识
- iOS 【UIKit-iOS事件之触摸事件】
- retain、copy、mutableCopy的区别(深拷贝 浅拷贝)
- 如何获取选中的复选框
- Java 斐波那契数列
- 第一次了解GitHub,在Windows下使用GitHub
- 深入理解Java的接口和抽象类(转载---写的非常好~)
- sendmsg() Permission denied
- [网络管理]共享文件之卷影副本的使用
- Spring数据源配置总结
- python科学计算库安装
- python科学计算库安装
- python科学计算库安装
- python科学计算库安装
- python科学计算库安装
- python科学计算库安装
- python科学计算库安装
- python科学计算库安装
- python科学计算库安装