您的位置:首页 > 其它

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;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: