2011-07-10 40 views
1

我不知道,但这:为什么NSApplescript的executeAndReturnError:似乎泄漏内存?

-(void)quitFinder { 
    NSAppleScript *restartFinder = [[NSAppleScript alloc] initWithSource:@"tell application \"Finder\" to quit"]; 
    [restartFinder executeAndReturnError:nil]; 
    [restartFinder release]; 
} 

当这样调用:

[self performSelectorOnMainThread:@selector(quitFinder) withObject:nil waitUntilDone:YES]; 

产生这样的:

enter image description here

在仪器内存泄漏的工具。难道我做错了什么?

回答

1

考虑切换到OSAKit。该API与NSAppleScript非常相似,但更广泛,所以这应该是无痛苦的。

如果OSAKit不泄漏,那么问题可能在NSAppleScript中很好,我建议使用filing a bug并附上您的仪器跟踪文档。

+0

OSAKit是否记录在任何地方? (我如何开始使用它?) – Vervious

+0

没关系。看完头文后,好像我需要做的就是用OSAScript替换NSApplescript。 – Vervious

+0

它没有记录,但它是一个公共API。是的,他们非常相似,你应该能够简单地应用你对NSAppleScript的了解。 –

2

这是一次性的事情,还是每次你打电话时都会发生?在第一种情况下,这可能是由OSA/AppleScript设置的某个永久状态的误报。

+0

虽然每次我打电话都会发生。 (但我也有另一种叫做 - (void)startFinder的方法,几乎​​完全相同,并且以完全相同的方式调用,不会泄漏)。其他的东西可能会歪吗? – Vervious