【发布时间】:2016-03-20 17:33:24
【问题描述】:
考虑以下代码:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let validator:NSPredicate = NSPredicate(format:"SELF MATCHES %@","[A-Za-z0-9- ]+")
if(validator.evaluateWithObject(string) || string == "" /* i.e. backspace */) {
self.process(textField)
return true
}
else {
return false
}
}
我想在 return 语句之后实际运行 self.process(textField),因为在它之前, textField 中的文本实际上还没有改变。这让我想知道,为什么我不能在 return 语句之后执行一些代码?为什么函数总是在 return 语句发生时停止?
我知道传统上这就是 return 的含义,但是还有其他选择吗?比如,有没有办法从函数中返回一个值,然后继续运行?
一方面,这似乎是一个愚蠢的问题,但另一方面,我觉得我不可能成为第一个想要这样做的人。如果我可以在运行循环的下一个循环中触发一些东西来运行就足够了,所以也许 GCD 中有一些东西可以帮助我。
【问题讨论】:
-
Google for Grand Central Dispatch