AppleScript を実行するための次のクラス メソッドがあります。
+ (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 でのメモリ割り当てを完全には理解していないことを十分に認めているので、自動解放プールを使用してもこれがそれほどリークしやすい理由を誰かが説明してくれることを期待していました。
どんな助けでも大歓迎です。