// self.wordTextField.text = @"32";
// self.wordTextField.text = [self.wordTextField.text lowercaseString];
// self.wordTextField.text = [self.wordTextField.text stringByReplacingOccurrencesOfString:@" " withString:@"?"];
NSString *removeString = @"`[email protected]#$%^&*()_+[]\\{}|;':\",./<>";
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 setter不会导致这种行为?这部分作品完美地(用户)所期望的......为什么改变的UITextField导致无限循环在一种情况下,而不是另一个?
您可能会发现'+ [NSCharacterSet characterSetWithCharactersInString:]',' - [NSString rangeOfCharacterFromSet:'和' - [NSString stringByReplacingCharactersInRange:withString:]'useful。或者,更好的是,NSRegularExpression。 – 2012-01-28 08:31:56