// self.wordTextField.text = @"32";
// self.wordTextField.text = [self.wordTextField.text lowercaseString];
// self.wordTextField.text = [self.wordTextField.text stringByReplacingOccurrencesOfString:@" " withString:@"?"];
NSString *removeString = @"`1234567890-=~!@#$%^&*()_+[]\\{}|;':\",./<>";
NSMutableSet *removeSet = [NSMutableSet set];
for (unsigned i = 0; i < removeString.length; i++) {
NSRange range; range.location = i; range.length = 1;
NSString *char_ = [removeString substringWithRange:range];
[removeSet addObject:char_];
}
for (unsigned i = 0; i < self.wordTextField.text.length; i++) {
NSRange range; range.location = i; range.length = 1;
NSString *thisLetter = [self.wordTextField.text substringWithRange:range];
if ([removeSet containsObject:thisLetter]) {
self.wordTextField.text = [self.wordTextField.text stringByReplacingOccurrencesOfString:thisLetter
withString:@""];
i--;
}
}
这三个注释行都导致我的方法进入无限循环,因为 self.wordTextField.text 位于编辑更改时调用的方法内,所以显然我设置 text 属性会导致更多编辑更改,从而导致在循环。我的问题是:为什么循环和条件语句中的 .text setter 不会导致这种行为?该部分工作完美,正如(用户)所期望的那样......
最佳答案
代码通过多次调用更改回调再次进入循环,但这不是无限循环,因为当从文本中删除所有无效字符时,它最终会停止。请注意,如果文本不包含任何要删除的字符,则不会调用循环内的 setter。
关于iphone - 为什么更改 UITextField 在一种情况下会导致无限循环,而在另一种情况下不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9043403/