new_text - это локальная переменная, она не инициализируется, и вы отправляете ей сообщение перед присвоением ему значения. В отличие от вновь выделенных объектов Objective-C, значения локальных переменных не обнуляются автоматически, поэтому значение указателя new_text является тем, что произошло в этой ячейке памяти до выполнения метода. Другими словами, ваш указатель new_text указывает на недетерминированную область памяти, поэтому поведение здесь не определено и непредсказуемо. Обычно это приводит к сбою, но по чистой случайности вы указываете на что-то похожее на строку, но содержимое этой строки также недетерминировано. Отсюда и странные значения символов.
n.b. Это отличный пример того, почему рекомендуется всегда инициализировать локальные переменные, когда они объявлены.