3 回答

TA貢獻1818條經(jīng)驗 獲得超3個贊
是的,您的第二個代碼段是完全有效的。
每次將-autorelease發(fā)送給對象時,都會將其添加到最內(nèi)部的autorelease池中。當(dāng)池耗盡時,它僅向池中的所有對象發(fā)送-release。
自動釋放池只是一種便利,它使您可以將發(fā)送-發(fā)送推遲到“以后”?!吧院蟆笨赡軙诙鄠€地方發(fā)生,但是在Cocoa GUI應(yīng)用程序中最常見的是當(dāng)前運行循環(huán)周期的結(jié)尾。

TA貢獻1780條經(jīng)驗 獲得超1個贊
NSAutoreleasePool:消耗與釋放
由于功能drain和release似乎是造成混亂,它可能是值得澄清這里(雖然這是覆蓋在文檔 ...)。
嚴格地說,從大局的角度drain是不等同于release:
在引用計數(shù)的環(huán)境中,drain確實執(zhí)行與相同的操作release,因此兩者在此意義上是等效的。要強調(diào)的是,這意味著您使用而不是不會泄漏池。drainrelease
在垃圾收集的環(huán)境中,release禁止操作。因此,它沒有任何作用。 drain另一方面,向收集器暗示它應(yīng)該“根據(jù)需要收集”。因此,在垃圾收集環(huán)境中,使用drain有助于系統(tǒng)平衡收集掃描。
- 3 回答
- 0 關(guān)注
- 623 瀏覽
添加回答
舉報