我正在尝试运行AppleScripts并获取脚本返回值的Swift Mac应用程序。
我正在从Spotify应用程序获取信息(歌曲名称,曲目时间等)
我每秒运行一次脚本(使用sleep(1)
)。我正在根据这些数据创建一个对象,并将结果打印到调试中。
该模型类被取消了初始化(我在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上进行测试,还对Archive(存档)进行了测试-到处保存结果,该应用程序的内存占用量一直在增加,直到操作系统将其终止(30-60分钟后)。 即使我停止运行脚本,也无法释放内存。 您能帮我解决内存泄漏问题吗? 任何建议都非常感谢。