簡體   English   中英

發送到ARC代碼的非ARC庫對象。 發行過多?

[英]Non-ARC library object sent to ARC code. Overreleased?

我正在使用的非ARC預編譯靜態庫正在主線程上發送ARC應用程序“事件” NSObject,該對象已放置在主線程的自動釋放池中。 我的應用程序在處理程序函數中作用於事件對象,但不會保留或釋放它,也不會再次使用它。

啟用Zombies后,當主事件循環耗盡頂級自動釋放池並且其中一個事件NSObjects被釋放時,我偶爾會休息一下。 聞起來好像ARC已經釋放了事件對象(也許當它超出我的處理程序的作用域時),然后主事件循環再次釋放了它。

這是一個合理的理論,還是不可能,而我還有另一個錯誤?

如果有可能,我該怎么做才能防止這種情況發生?

根據您的描述,自動釋放可以正常工作-該函數已自動釋放了對象,這意味着您可以使用它,但是它會在自動釋放池的末尾釋放。

默認情況下,您在主循環中使用自動釋放池。 但是,沒有什么可以阻止您將調用包裝到@autorelease塊中,並檢查對象是否在正確的時間釋放。

暫無
暫無

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

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