我有一个函数可以返回在第三方键盘上输入的最后一个单词:
var lastWordTyped: String? {
let proxy = self.textDocumentProxy as! UITextDocumentProxy
if let documentContext = proxy.documentContextBeforeInput as NSString? {
let length = documentContext.length
if length > 0 && NSCharacterSet.alphanumericCharacterSet().characterIsMember(documentContext.characterAtIndex(length - 1)) {
let components = documentContext.componentsSeparatedByCharactersInSet(NSCharacterSet.alphanumericCharacterSet().invertedSet) as! [String]
println(components)
return components[components.endIndex - 1]
}
}
return nil
}
由于某种原因,虽然函数正常工作并返回正确的输出,但我偶然查看了日志中的输出,发现它正在屠宰输出并多次输出(如下图所示)。
这会导致键盘的内存使用量增加吗?它减慢了吗?
我该如何解决这个问题?
编辑1 :使用模拟器时无法重现此错误。
答案 0 :(得分:1)
println(components)
未同步,因此如果有多个线程调用您的代码,则它们的输出可能会重叠。
我建议将NSLog(components)
替换为access_website_downloads_public,website_downloads.files,model_website_downloads_files,base.group_public,1,0,0,0
,以便更好地了解实际情况。