我是使用基于块的代码的新手,所以我需要知道如何将下面的代码转换为基于块的代码,以使其更有效。什么固件采用基于块的代码?
- (NSString *)removeBadWordsFromString:(NSString *)string {
for (NSString * word in badWords){
string = [string stringByReplacingOccurrencesOfString:word withString:@""
options:NSCaseInsensitiveSearch range:NSMakeRange(0, string.length)];
}
return string;
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
[textField setText:[self removeBadWordsFromString:[NSString stringWithFormat:@"%@%@", textField.text, string]]];
return (string.length == 0);
答案 0 :(得分:1)
我假设您特意指的是使用Grand Central Dispatch with block(而不是仅使用块)。但是,这里的问题是,在编写代码时,您无法利用并发性,因为您正在修改removeBadWordsFromString中的字符串。如果你试图同时在多个线程上编辑该字符串,如果字符串没有在原子问题中处理,那么非常糟糕的事情会发生(并且会发生)。如果字符串是在原子问题中处理的,那么你就不会获得性能提升,因为它一次只能对它进行一次操作。
有关并发性的更多信息,您真的需要阅读Apple关于并发性的文档,这解释了这一点: