簡體   English   中英

發送-release或-drain與自動釋放池有什么區別?

[英]What's the difference between sending -release or -drain to an Autorelease Pool?

在許多書籍和許多網站上,我看到-drain。 好吧,對於一個聽起來很酷的自動釋放池。 但它除了發布之外還做了什么嗎? 我猜--Drain只是讓Pool釋放所有它的對象,而不釋放Pool本身。 只是一個猜測。

請注意,對oxigen的回答的評論說-drain不釋放NSAutoreleasePool是不正確的。 NSAutoreleasePool文檔明確指出-Drain釋放(並因此破壞)NSAutoreleasePool。

-drain是對NSAutoreleasePool對象使用-release的替代,唯一的區別是為垃圾收集系統提供了一個提示。

如果您的系統有垃圾收集,那么-drain為GC發送消息(objc_collect_if_needed)

如果你還沒有GC,那么drain = release

Oxigen是對的,請參閱NSAutoreleasePool的方法drain文檔:

在引用計數環境中,釋放並彈出接收器; 在垃圾收集環境中,如果自上次收集以來分配的內存大於當前閾值,則觸發垃圾收集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM