第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

xcode中啟用了arc后,是何時(shí)釋放對象?

xcode中啟用了arc后,是何時(shí)釋放對象?

DIEA 2019-04-14 11:28:34
剛學(xué)objectivec,遇到內(nèi)存管理問題,情景是這樣的:啟用了arc,設(shè)定了一個(gè)Person類,只有一個(gè)weak的property,(NSMutableArray*)favorPerson.h如下#import@interfacePerson:NSObject@property(nonatomic,weak)NSMutableArray*favor;@endPerson.m如下#import"Person.h"@implementationPerson-(void)dealloc{NSLog(@"Persondealloc!");}@endmain.m如下#import#import"Person.h"intmain(intargc,char*argv[]){Person*p=[[Personalloc]init];NSMutableArray*arr=[[NSMutableArrayalloc]initWithObjects:@"1",@"2",nil];p.favor=arr;NSLog(@"%@",p.favor);arr=nil;NSLog(@"%@",p.favor);}控制臺打印的結(jié)果是這樣的2015-09-1113:31:14.408Prog1[32787:193921](1,2)2015-09-1113:31:14.409Prog1[32787:193921](1,2)2015-09-1113:31:14.409Prog1[32787:193921]Persondealloc!我的分析是:arr剛開始指向的對象只有arr一個(gè)強(qiáng)指針指向它,雖然p.favor=arr,但favor屬性是weak的,那么當(dāng)arr=nil時(shí),這個(gè)對象就沒有強(qiáng)指針指向它了,此時(shí)該對象應(yīng)該被釋放,但是第二次打印的結(jié)果表明并沒有被釋放再但是,當(dāng)我注釋掉第一次的打印,即#import#import"Person.h"intmain(intargc,char*argv[]){Person*p=[[Personalloc]init];NSMutableArray*arr=[[NSMutableArrayalloc]initWithObjects:@"1",@"2",nil];p.favor=arr;//NSLog(@"%@",p.favor);arr=nil;NSLog(@"%@",p.favor);}打印結(jié)果卻是2015-09-1113:44:48.956Prog1[36117:210004](null)2015-09-1113:44:48.958Prog1[36117:210004]Persondealloc!即表明對象被釋放了我的問題是:啟用了arc后,對象在沒有強(qiáng)指針(強(qiáng)引用)的情況下是否被立即釋放?如果不是,是什么時(shí)候釋放?(注意我用init開頭的方法創(chuàng)建的數(shù)組對象,在非arc情況下是不會autorelease的,main函數(shù)中我也沒有@autoreleasepool)點(diǎn)語法是否會影響對象釋放?(我提這個(gè)問題的原因是,當(dāng)我不用property而是把favor設(shè)為@public的成員變量時(shí),用p->_favor打印第一次就不會出現(xiàn)arr=nil后沒有被釋放的情況)arc到底是怎樣決定何時(shí)釋放對象的呀?我知道arc是編譯時(shí)就決定了何時(shí)releaseretainautorelease,那它是怎么決定的呢?
查看完整描述

2 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

當(dāng)該內(nèi)存空間沒有指針指向它了,它就被自動釋放了。
p.favor=arr;
arr=nil;
arr是強(qiáng)引用,已經(jīng)被置nil了,p.favor自然也就找不到相應(yīng)內(nèi)存地址了,所以輸出(null)。
                            
查看完整回答
反對 回復(fù) 2019-04-14
  • 2 回答
  • 0 關(guān)注
  • 294 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號