我有一个包含许多动态项目的 NSMenu。这些项目是在 NSMenuDelegate 的 menuNeedsUpdate 方法中创建的,并且每个都分配有一个代表对象。我正在寻找修剪对象图,并希望通过删除所有动态项目(并在重新打开菜单时重新创建它们)来在关闭菜单时重新获得一些内存。我遇到的问题是确切地知道应该在哪里以及如何处理。
该文档指出 NSMenu 的 menuDidClose 不是更新菜单内容的合适位置。我已经设置了一个通知来监听 NSMenuDidEndTrackingNotification 并在此时通过调用我的 NSMenu 的 removeItem: 方法来删除动态项目。这是处理这种情况的正确方法吗?
最后,我可以保证在 NSMenuItem 上调用 removeItem 将正确地取消任何可能分配给它的自定义视图以及任何子菜单吗?