0
的噸我有下面的類的方法來執行一個AppleScript:NSAppleScript泄漏內存
+ (NSString *) executeAppleScript:(NSString *) scriptToRun{
NSAutoreleasePool *thePool = [[NSAutoreleasePool alloc] init];
NSAppleScript *appleScriptObject = [[NSAppleScript alloc] initWithSource:scriptToRun];
NSAppleEventDescriptor *objectReturned = [appleScriptObject executeAndReturnError:nil];
[appleScriptObject release];
appleScriptObject = nil;
NSString *charToReturn = [objectReturned stringValue];
if (charToReturn == nil){
charToReturn = [NSString stringWithString:@"error"];
}
[charToReturn retain];
[thePool drain];
[charToReturn autorelease];
return charToReturn;
}
的問題是,這是泄漏噸存儲器。我完全承認我並不完全理解Cocoa中的內存分配,所以我希望有人能夠向我解釋爲什麼即使使用autorelease池,這也是如此漏洞。
任何幫助,非常感謝。
是的,儀器是我被告知這是漏水的地方。另外,這讓我很驚訝,這個類方法佔用了大量的分配(我們沒有發佈)。 – 2010-11-08 07:27:31
使用OSAAScript的優點是什麼? – 2010-11-08 07:28:39
Andrew J. Freyer:可能不會泄漏。 – 2010-11-08 15:00:04