Причина в том, что когда вы сохраняете строку в textView.text, она будет пытаться отобразить ее так, как она видится в строке.
Это означает, что она пытается показать "\ n",вместо новой строки.
Для этого (из регулярного выражения) используется дополнительная '\', чтобы замаскировать функциональность \ n просто, чтобы показать "\ n".Внутренне он хранится как "\ n" в строке.
string = @"hey \nDude !";
textView.text = [string stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];