replaceOccurrencesOfString:...
будет пересекать строку каждый раз, когда вы ее вызываете.
Альтернативой, которая должна сделать замену быстрее, - это вручную переправить строку только один раз и построить новую строку на этом пути.
Вот пример, хотя, вероятно, все еще комната для дальнейшей оптимизации
- (NSString *)encodeEntity:(NSString *)string {
NSUInteger length = string.length;
NSMutableString *encodedString = [NSMutableString stringWithCapacity:length];
unichar buffer[length + 1];
[string getCharacters:buffer range:(NSRange){0, length}];
for(NSUInteger i = 0; i < length; i++) {
char current = buffer[i];
switch(current) {
case '&': [encodedString appendString:@"&"]; break;
case '\"': [encodedString appendString:@"""]; break;
case '\'': [encodedString appendString:@"'"]; break;
case '<': [encodedString appendString:@"<"]; break;
case '>': [encodedString appendString:@">"]; break;
default: [encodedString appendFormat:@"%c", current]; break;
}
}
return encodedString;
}
Кроме того, если ваш конкретный вопрос, чтобы избежать XML-сущности, этот вопрос может быть полезно: Objective C HTML escape/unescape
это звучит, как вы хотите исключить элементы HTML. Проверьте это http://stackoverflow.com/questions/659602/objective-c-html-escape-unescape –
Ну, вы * можете * сломаться и на самом деле сделать снимок, который они называют «программированием». –