我想知道是否有人建议使用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的替代方案可能无法正常工作。提前感谢任何想法。
答案 0 :(得分:1)
您的问题的答案是,还有另一个沙盒选项吗?:不是。这就是你应该如何寻找正在运行的应用程序。
您可以尝试使用KVO(在sharedWorkspace的runningApplications属性上)。文档建议这样做而不是你正在做的事情:
使用键值观察来通知此数组属性的更改,而不是轮询。
答案 1 :(得分:1)
经过相当多的故障排除后,我最终发现在从Xcode(版本7.2(7C68))构建/运行应用程序/项目时,会发生内存泄漏问题 。如果我构建项目,然后进入Finder并手动启动构建的应用程序,内存分配似乎会稳定下来。
我没有启用Zombie对象,并且我没有对默认项目设置进行任何更改。这必须是Xcode中的一个错误。