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 的 运行Applications 属性 上)。文档建议这样做而不是你正在做的事情:
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.
中的错误
我想知道是否有人对使用 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 的 运行Applications 属性 上)。文档建议这样做而不是你正在做的事情:
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.
中的错误