我想知道是否有人建议使用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]);
}
}
}
是唯一等待苹果提供解决方案的选择吗?我正在沙盒环境中工作,因此某些基于NSTask的替代方法可能无法正常工作。预先感谢您的任何想法。
最佳答案
您的问题的答案是,还有另一个沙盒选项吗:是。这就是您应该寻找正在运行的应用程序的方式。
您可以尝试使用KVO(在sharedWorkspace的runningApplications属性上)。该文档建议这样做而不是您正在做什么:
与其轮询,不如使用键值观察功能来通知此数组属性更改。
关于objective-c - NSWorkspace sharedWorkspace runningApplications导致内存泄漏;替代选择?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34970273/