2011-07-10 42 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