UITextView с текстом менее 10 символов висит iOS 9

Начиная с iOS 9 (я использовал Xcode 7.0 beta 6 (7A192o)), приложение Objective-C с UITextView будет висеть , если текст текстового представления меньше 10 символов. Загрузка процессора достигает 99-100%, и вся система зависает.

Как воспроизвести:

  • Создайте совершенно новое приложение для одного вида из шаблона (или что-нибудь еще).
  • В раскадровке добавьте UITextView с настройками по умолчанию в любом месте основного вида.
  • Установите текст в строку длиной менее 10 символов.
  • Запустите приложение в симуляторе (любое устройство, если оно IOS 9).
  • При запуске перед отображением единого окна система будет зависать, и загрузка процессора будет максимально навсегда.
  • Установите текст для любого другого текста, содержащего более 10 символов, и приложение работает правильно. a

Похоже, что ограничения или любые другие настройки не влияют на это поведение.

Непосредственным решением было бы просто не иметь менее 10 символов, но, ну, это ламе.

Вы можете проверить этот репозиторий github, который также демонстрирует проблему.

Я также отправил отчет об ошибке Apple (ошибка № 22736256, хотя вы, вероятно, еще не видите ее там).

Weirdest. Ошибка. Когда-нибудь.

Кто-нибудь также сталкивается с этим?

Ответ 1

В соответствии с примечаниями к выпуску Xcode 7.1.1 это должно быть исправлено сейчас:

Раскалывания и наконечники, содержащие элементы UITextView с длиной от 1 до 11 символов, больше не зависают при загрузке в iOS. (23264732)

Ответ 2

Мне понадобилось полдня, чтобы сузить ошибку до UITextView. Это должно быть самой глупой ошибкой.

Вам не нужно гарантировать, что UITextView содержит не менее 10 символов. Просто добавив по умолчанию не менее 10 символов в UITextView в Interface Builder, это устранит проблему. Затем вы можете очистить UITextView с помощью кода.

Кстати, это ошибка Xcode 7, а не ошибка iOS9. Новые сборки, созданные с использованием Xcode 7, создадут ту же проблему в iOS7 и iOS8.

Ответ 4

Я нашел решение сначала проверить утечку памяти и, пожалуйста, добавьте эту строку кода в конкретный класс.

- (Недействительными) viewWillAppear: (BOOL) анимированный {

[super viewWillAppear: YES];

}

Это полезно для меня, моя проблема решена.