NSExpression
を使用して動的に生成された数式を評価したいと考えています。以下のシンプルなプログラムを実行すると、メモリ消費量は1GB以上になります。NSExpressionメモリリーク?
明らかにメモリがリークしていますか、または私が使用している方法に間違いがありますかNSExpression
?実際のプログラムで
#!/usr/bin/env swift
import Foundation
for _ in 1...100 {
let expressionString = "((x - y) * ((x * x) - (((x - y) * -1) - y))) + (x * (((x * (y - x)) - x) * -1))"
let expression = NSExpression(format: expressionString)
for x in 0 ..< 320 {
for y in 0 ..< 320 {
let result = expression.expressionValue(with: ["x" : x, "y": y], context: nil) as! Double
}
}
}
、もちろん、私は外側のループの反復ごとに新しいexpressionString
を作成します。 expressionValue()
等
自動解放プールを使用してみてください:http://stackoverflow.com/questions/25860942/is-it-necessary-to-use-autoreleasepool-in-a-swift-program –