·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> autorelease方法

autorelease方法

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23
  基本用法; 1,autorelease 方法会返回对象本身 2,调用完autorelease方法后,对象的计数器不变 2,autorelease 会将对象放到一个自动释放池中 3,当自动释放池被销毁时,会对池子里面的所有对象做一次release操作   autorelease的好处: 1》不用再关心对象释放的时间 2》不用再关心什么时候调用release   autorelease的使用注意: 1》占用内存较大的对象不要随便使用autorelease; 2>占用用内存较小的对象使用autorelease,没有太大的影响   错误写法: 1》alloc之后调用了autorelease,又调用了release @autoreleasepool {     Person * p  = [ [ [Person alloc] init]  autorelease]     [ p  release]; } 2》连续调用多次autorelease @autoreleasepool {     Person * p  =[ [ [ [Person alloc] init]  autorelease] release] } 自动释放池: 1》在IOS程序运行过程中,会创建无数个池子,这些池子都是以栈结构存在(先进后出) 2》当一个对象调用autorelease方法时,会将这个对象放到栈顶的释放池   自动释放池的创建方式: 1》IOS5.0之前: NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]  init];   [pool release] ; // [pool drain]; 2>IOS5.0开始 @autoreleasepool    {        }     1,系统自带的方法里没有包含alloc, new , copy,说明返回的对象都是autorelease,如NSString * s = @"adaf"; 2,开发中经常回提供一些类方法,快速创建一个已经autorelease过的对象 1》创建对象时不要直接用类名,一般用self +(id) person {     return  [ [ [self alloc]   init ]   autorelease]; } int main ( ) { @autoreleasepool//必须加池子    {     Person * p =[  [ [Person alloc]   init ]   autorelease];     } } 可以在创建类方法精简Person的初始话: +(id) person {     return  [ [ [Person alloc]   init ]   autorelease]; }