NSWorkspace sharedWorkspace runningApplications 导致内存泄漏;替代选择?

NSWorkspace sharedWorkspace runningApplications causing memory leak; alternative option?

我想知道是否有人对使用 runningApplications 的替代方法有建议,因为像下面这样的东西似乎正在泄漏内存:

https://openradar.appspot.com/24067155 https://github.com/bradjasper/NSRunningApplicationMemoryLeaks

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

    [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(checkApps:) userInfo:nil repeats:YES];

}

- (void) checkApps : (id) sender {

    @autoreleasepool {

        NSArray *appsArray = [[NSWorkspace sharedWorkspace] runningApplications];

        for (NSRunningApplication *a  in appsArray) {
            NSLog(@"%@", [a localizedName]);
        }

    }

}    

等待Apple提供解决方案是唯一的选择吗?我在沙盒环境中工作,因此某些基于 NSTask 的替代方案可能无法正常工作。提前感谢您的任何想法。

你的问题的答案是,是否有另一个沙盒选项?:没有。这就是您应该如何查找 运行 应用程序。

您可以试试 KVO(在 sharedWorkspace 的 运行A​​pplications 属性 上)。文档建议这样做而不是你正在做的事情:

Instead of polling, use key-value observing to be notified of changes to this array property.

经过大量故障排除后,我最终发现 只有 内存泄漏问题发生在 building/running 来自 Xcode 的 app/project 时(版本 7.2 (7C68))。如果我构建项目,然后进入 Finder 并手动启动构建的应用程序,内存分配似乎稳定下来。

我没有启用 Zombie 对象,并且我没有对默认项目设置进行任何更改。这一定是 Xcode.

中的错误