2011-07-22 7 views
0

私はブロックベースのコードを使用するのが初めてであるので、ブロックベースのコードをより効率的にするために、以下のコードを変換する方法を知る必要があります。また、ブロックベースのコードを採用したファームウェアは?ブロックベースのコード変換?

- (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); 

答えて

1

私はあなたが(ちょうどブロックを使用してではなく)ブロックとグランドセントラル派遣を使用して、具体的に言及されていると仮定しています。ただし、ここでの問題は、コードが記述されるときに、removeBadWordsFromString内の文字列を変更するため、同時実行性を利用できないことです。同時に複数のスレッドでその文字列を編集しようとすると、文字列が原子的に扱われないと、非常に悪いことが起きる可能性があります。ストリングが原子的な問題で扱われている場合は、一度に1つしか実行できないため、パフォーマンスの向上は得られません。

http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html

:同時実行の詳細については

、あなたは本当にこのことを説明している並行処理にAppleの文書を読む必要が