【问题标题】:WebView: libdispatch leaks in an ARC-enabled appWebView:启用 ARC 的应用程序中的 libdispatch 泄漏
【发布时间】:2012-03-25 15:45:51
【问题描述】:

在基于文档的启用 ARC 的应用程序中,我有一个正在打开 HTML 文件的 WebView。这个想法是做一些编辑,然后保存到 WebArchive。当我运行 Instruments 时,我发现如下图所示的随机泄漏。我没有用malloc 初始化任何东西,为什么我得到它们? (当我开始打开和关闭窗户时,我得到了泄漏。)

Document.h

#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>

@interface KBDocument : NSPersistentDocument {
    IBOutlet WebView *webView;
}

Document.m

- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
    [super windowControllerDidLoadNib:aController];

    NSString *urlStr = @"file:///Users/.........../Content/1/index.html";
    NSURL *url = [NSURL URLWithString:urlStr];

    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [[webView mainFrame] loadRequest:requestObj];
    [webView setEditable:YES];
}

泄露:

【问题讨论】:

    标签: objective-c macos cocoa memory-leaks webview


    【解决方案1】:

    好吧,你可以看到有问题的库是 libdispatch;所以看起来你的代码没有错误。 此处描述了 Libdispatch http://libdispatch.macosforge.org/。如果您想了解更多信息,可以查看它。

    【讨论】:

    • 谢谢,我查过了。我是可可的新手,所以描述没有太大意义,看起来它是为了实现多任务处理和使用 Grand Central Dispatch,而不是线程......我没有在我的代码中实现这样的东西,所以我可以放心地忽略它吗?
    • 可能。您正在使用的框架将使用线程和 GCD 做一些事情,但您不必担心它们。如果您发现大量泄漏,您应该提交错误报告。
    • 顺便说一句,当我注释掉所有代码时,我仍然得到泄漏,但是当我从界面构建器中删除 webView 时,泄漏停止出现!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 2014-02-28
    • 1970-01-01
    • 2012-12-09
    • 2012-05-17
    相关资源
    最近更新 更多