Разве плохо, что метод jsEscape должен инициализировать контекст JS для каждого экранирования, которое он делает? Для того, что я видел, это не имело значения, но я действительно не загружал это сильно.
+ (NSString*) jsEscape:(NSString*)string {
// Initing JSContext for every webEscape might be a performance hit
NSString *result = string;
JSContext *context = [[JSContext alloc] init];
result = [[context evaluateScript:[NSString stringWithFormat:@"escape(\"%@\")",string]] toString];
return result;
}