使用 Cocoa 按钮打开 url 会导致内存泄漏
Posted
技术标签:
【中文标题】使用 Cocoa 按钮打开 url 会导致内存泄漏【英文标题】:Opening url with Cocoa button causes memory leak 【发布时间】:2012-06-27 15:39:57 【问题描述】:我的 Cocoa 应用程序中有一个按钮,可以在 Web 浏览器中打开一个 url。如果按下按钮时浏览器未打开,则出现内存泄漏。如果浏览器已经打开,那么我不会得到内存泄漏。
按钮的代码是:
- (IBAction)goToWebsite:(id)sender
[[NSWorkspace sharedWorkspace] openURL: [NSURL URLWithString:@"http://www.website.com/?apiref=123"]];
Instruments 中描述的内存泄漏是:
Leaked Object = Malloc 2.00 KB
Number = 1
Address = 0x7f8003039600
Size = 2.00 KB
Responsible Library = libsystem_sandbox.dylib
Responsible Frame = sandbox_extension_issue
如何防止这种内存泄漏?
这是我第一次测试应用程序是否存在泄漏,因此我们将不胜感激任何有关此问题的帮助。我正在使用 Xcode 4.3.3 和 OSX 10.7.4
【问题讨论】:
启用应用沙盒和检查传入/传出网络连接是否可以防止泄漏发生? 【参考方案1】:除了将它作为一个 bug 提交给苹果之外,你真的无能为力
【讨论】:
这是一个错误还是我的程序有问题?我有一种感觉,我没有正确地沙盒化我的应用程序。 那么您有没有在控制台应用中查看您是否违反了沙盒? 沙盒不允许使用 Safari 吗? 要求NSWorkspace
打开这样的 URL 对于沙盒应用来说是完全可以接受的。
是的,我同意。该应用程序已在应用程序商店中被接受,因此显然它是沙盒应用程序的可接受方法。以上是关于使用 Cocoa 按钮打开 url 会导致内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章