[英]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.