我是这个论坛的新手,我已经搜索过,但没有找到这个问题的任何答案,这个问题在本周的大部分时间里一直困扰着我。
每次按下按键时 NSTextField 都会导致内存泄漏。
我已将这个问题从我的代码中分离出来,并且可以按如下方式重现:
- 创建一个新的“Cocoa 应用程序”项目。
- 在主菜单 xib 窗口中放置一个 NSTextfield。 (无约束力、出口或行动)
- Product -> Profile,选择“内存泄漏”工具(在 XCode 4 中)
在用户在文本字段中输入字符之前不会发生泄漏。
我得到了 8 个泄露的 32 字节 NSCFString 对象,其类型如下:
Library Responsible Caller
0 CFString Malloc 00:11.524.538 1 0x100130bb0 32 AppKit -[NSEvent charactersIgnoringModifiers]
1 CFString Malloc 00:11.622.145 1 0x100136950 32 AppKit -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
请注意,该项目除了自动生成的内容之外没有任何代码。
如果其他人可以重现这个问题,甚至可能提供如何防止它发生的建议,我会很感兴趣。
OS X 10.6.8 和 XCode 4.0.2(3.2.6 也会出现同样的问题)
任何建议将不胜感激,并将减少我目前的挫败感。
Update:
尝试在不同的 Mac 上创建上述项目。
发现其中之一没有产生泄漏(使用与上面相同的步骤创建项目)
在从未安装过 XCode 的 Mac 上安装了 XCode 4 - 没有泄漏!
- 使用以下过程在相当新的 MB Pro 上卸载 Xcode 3.2.6:http://macdevelopertips.com/xcode/how-to-uninstall-xcode.html http://macdevelopertips.com/xcode/how-to-uninstall-xcode.html
- 重新安装XCode4
仍然泄漏内存。
- 在同一台 MPro 上擦除硬盘,安装 OS X 10.6,软件更新至 10.6.8
- 安装XCode4
- 创建与上面相同的测试项目
没有内存泄漏!!!!
现在很明显,这个问题的根源在于安装中的某个地方,而不仅仅是仪器的“误报”。我的配置文件运行被执行了多次,因此存在一次性行为,并且该行为在我的 Mac 上 100% 可重现。
现在的问题:我还有一台 27 英寸 iMac,无法选择硬盘擦除。
我猜想安装的某些东西(框架?)在升级或重新安装 XCode 时不会更新/删除。
非常感谢您对此问题原因的想法。