Objective?
下面關(guān)于Objective-C內(nèi)存管理的描述錯(cuò)誤的是
A 當(dāng)使用ARC來(lái)管理內(nèi)存時(shí),代碼中不可以出現(xiàn)autorelease
B autoreleasepool 在 drain 的時(shí)候會(huì)釋放在其中分配的對(duì)象
C 當(dāng)使用ARC來(lái)管理內(nèi)存時(shí),在線程中大量分配對(duì)象而不用autoreleasepool則可能會(huì)造成內(nèi)存泄露
D 在使用ARC的項(xiàng)目中不能使用NSZone
= =。。
網(wǎng)上看到的,參考答案為A.
我覺(jué)得<愛(ài)尬聊_健康養(yǎng)生>選C來(lái)的~
不知道A錯(cuò)在哪里了?
11479849 21小時(shí)前
我來(lái)搞個(gè)笑 “難道你們沒(méi)打開(kāi)過(guò) main.m?”
liubin1975 21小時(shí)前
C的描述是對(duì)的,在遇到需要大量創(chuàng)建對(duì)象的地方使用autoreleasepool可以加快對(duì)象釋放的速度。如果說(shuō)A是錯(cuò)的,那只能是說(shuō)明出題者想考你ARC的原理其實(shí)是編譯器自動(dòng)幫你在代碼中加入autorelease等代碼。其實(shí)在ARC的項(xiàng)目中寫autorelease連編譯都通不過(guò),這樣想得話A其實(shí)也是對(duì)的。不過(guò)既然其他3個(gè)都是對(duì)的,也只能選A了。
認(rèn)證時(shí)尚導(dǎo)師 21小時(shí)前
你看的參考答案不對(duì)。ARC 下,不能使用 autorelease 進(jìn)行編程,但是可以使用 @autoreleasepool。它的作用是降低內(nèi)存占用。
qkoufu5232 21小時(shí)前
因?yàn)锳RC是編譯器特性,而不是iOS運(yùn)行時(shí)特性,更不是其他語(yǔ)言中的垃圾收集器。所以這就意味這它只能處理在編譯時(shí)就確定的內(nèi)存管理,所用的機(jī)制就是引用計(jì)數(shù)。換句話來(lái)講,他的內(nèi)存釋放不是強(qiáng)制的,比如內(nèi)存相互引用,動(dòng)態(tài)引用等會(huì)導(dǎo)致引用計(jì)數(shù)不會(huì)立刻置0,所以這個(gè)時(shí)候顯式釋放是有必要的。
