You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Autosaving NSDocument搭配NSWindow与NSToolbar时的内存泄漏问题

Cocoa Autosaving NSDocument 内存泄漏求助:关闭文档后实例无法释放

我遇到一个Cocoa内存泄漏问题:用户关闭开启Autosaving的NSDocument后,该文档实例始终无法被释放。在此求助,是否有其他开发者碰到过类似问题,以及可行的解决方案。

具体场景与问题细节

  • 当开启Autosaving的NSDocument打开包含NSToolbar的NSWindow时,默认的'Unified'工具栏样式会将文档标题置于工具栏左侧,标题右侧存在一个可点击区域。
  • 用户点击该区域时,控制台会输出错误日志:[Document] Popover failed to show。
  • 表面看只是普通错误,但实际已引发内存泄漏:未能正常显示的NSDocumentTitlebarPopoverViewController被持续持有,且该视图控制器对NSDocument存在强引用,最终导致整个NSDocument实例无法被销毁。

点击区域示意图

点击区域截图

复现说明

我制作了一个最小复现项目:基于macOS文档应用模板创建,添加了Toolbar,并在Document类的deinit方法中加入打印语句,用于验证文档实例是否成功销毁。

搜索情况

我在网络上搜索[Document] Popover failed to show日志信息,以及泄漏的视图控制器类名NSDocumentTitlebarPopoverViewController,均未找到相关结果。

内容的提问来源于stack exchange,提问作者Daniel Higgott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:34:59