Я экспериментирую с приложением Swift Mac, которое запускает AppleScripts и получает возвращаемое значение скрипта.Я получаю информацию из приложения Spotify (название песни, время дорожки и т. Д.), Я запускаю сценарии каждую секунду (используя sleep(1)
).Я создаю объект из этих данных и печатаю результаты в отладке.Класс модели деинтилируется (я использовал оператор print в методе deinit
. Единственное объяснение состоит в том, что метод, который запускает AppleScript, как-то теряет память:
func shell(arguments: [String]) -> String?
{
let task = Process()
task.launchPath = "/usr/bin/osascript"
task.arguments = arguments
let pipe = Pipe()
task.standardOutput = pipe
task.launch()
var data = pipe.fileHandleForReading.readDataToEndOfFile()
let output = String(data: data, encoding: String.Encoding.utf8)
return output?.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
Я также получаю ошибку: osascript[2268:70490] AppleEvents: received mach msg which wasn't complex type as expected in getMemoryReference.
в области отладки.
Я тестирую и на Mojave, и на High Sierra, также тестировался с архивом - сохраняйте результат везде, объем памяти приложения продолжает увеличиваться, пока ОС не убьет его (после 30-60 минут). Память не освобождается даже после того, как я перестал запускать скрипт. Не могли бы вы помочь мне решить проблему утечки памяти? Любой совет очень ценится.