国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

autorelease方法

2019-11-14 19:11:16
字體:
來源:轉載
供稿:網友
 
基本用法
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];
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜昌市| 松阳县| 小金县| 姚安县| 娄烦县| 三河市| 砚山县| 祥云县| 温州市| 赤水市| 平乡县| 呼和浩特市| 浠水县| 武山县| 封开县| 电白县| 镇远县| 灵川县| 乐清市| 博罗县| 尚义县| 潜江市| 浦东新区| 土默特右旗| 蓝田县| 偃师市| 上杭县| 石棉县| 静乐县| 张家港市| 青冈县| 永安市| 太原市| 米泉市| 合阳县| 绥江县| 大宁县| 固阳县| 莱芜市| 湘乡市| 乐至县|