【发布时间】:2015-12-20 08:16:45
【问题描述】:
我已经意识到matchesInString 方法存在内存泄漏。 我做错了什么,还是这真的是泄漏的核心方法? 如果泄漏,使用正则表达式的替代方法是什么? (我知道我可以自己编写代码,但我正在寻找可重用的东西) 我的代码只是试图删除字符串的一些特定参数。
print ("Memory Leak Test ");
for var i in 1...1000000 {
print("Memory Leak Test " + String(i));
let sMyString:String="opacity:0.71889403;fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline\"/></svg>"
var stringsuche:String = "fill:(.*?);";
let regex = try! NSRegularExpression(pattern: stringsuche, options: [])
let results = regex.matchesInString(sMyString, options: [], range: NSMakeRange(0, sMyString.length))
}
print("End Memory Leak Test ");
更新 我只是为此编写了自己的代码,但是这种经历给我一种不好的感觉。我想有很多核心方法正在泄漏。刚刚发现“stringByTrimmingCharactersInSet”和“stringByReplacingOccurrencesOfString”也泄漏了!
func getstylevalue(styleprop:String, text:String) -> String{
var returnvalue="";
let stringsuche:String=styleprop;
let indexstart=text.indexOf(stringsuche);
if indexstart == -1 {
return returnvalue;
}else{
let indexend=text.indexOf(";", startIndex: indexstart) ;
if indexend == -1 {
return returnvalue;
}else{
returnvalue=text.substring(indexstart + stringsuche.length, endIndex: indexend);
return returnvalue;
}
}
}
内存泄漏与修剪:
print("Start Memory Leak Test ");
for i in 1...1000000 {
let theword:String=" bla ";
let temp:String = theword.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
}
print("End Memory Leak Test ");
【问题讨论】:
标签: swift memory-leaks