为什么我的日志打印了这么多奇怪的字符并弄乱了函数的输出?

时间:2015-09-03 15:51:16

标签: xcode swift keyboard

我有一个函数可以返回在第三方键盘上输入的最后一个单词:

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 :使用模拟器时无法重现此错误。

enter image description here

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 ,以便更好地了解实际情况。