文本少于10个字符的UITextView会挂起iOS 9

时间:2015-09-16 14:41:25

标签: ios objective-c uitextview

从iOS 9(我使用Xcode 7.0 beta 6(7A192o))开始,如果文本视图的文本少于10个字符,带有UITextView的Objective-C应用程序将挂起。 CPU使用率高达99-100%,整个系统都挂起。

如何重现:

  1. 从模板(或其他任何内容)创建全新的单一视图应用。
  2. 在情节提要中,在主视图的任何位置添加默认设置的UITextView。
  3. 将文本设置为长度小于10个字符的字符串。
  4. 在模拟器中启动应用程序(任何设备,只要它是iOS 9)。
  5. 启动后,在显示单个视图之前,系统将挂起,CPU使用率将永远达到最大值。
  6. 将文字设置为超过10个字符且该应用正常运行的任何其他文字.a
  7. 看起来约束或任何其他设置不会影响此行为。

    立竿见影的解决办法就是不要少于10个字符,但这就是蹩脚的。

    您可以查看this github repository,这也证明了问题。

    我还向Apple提交了一份错误报告(错误号22736256,尽管你可能还没有看到它)。

    最古怪。错误。如初。

    是否还有人遇到过这个?

4 个答案:

答案 0 :(得分:9)

我花了半天的时间将错误缩小到UITextView。这必须是有史以来最愚蠢的错误。

您无需确保UITextView至少包含10个字符。只需在Interface Builder中向UITextView添加至少10个字符的默认值即可解决问题。然后,您可以使用代码清空UITextView。

顺便说一下,这是一个Xcode 7错误,而不是iOS9错误。使用Xcode 7构建的新版本将在iOS7和iOS8中产生相同的问题。

答案 1 :(得分:1)

参考一下。这是Xcode 7中的一个错误,但仍未修复。

http://xcode7criticalbug.blogspot.in/2015/10/uitextview-bug-in-xcode-ios-app-getting.html

可以通过以编程方式设置UITextView的文本属性来克服它。

答案 2 :(得分:1)

根据release notes of Xcode 7.1.1,现在应该修复:

  

在iOS上加载时,包含1到11个字符的UITextView元素的故事板和笔尖不再挂起。 (23264732)

答案 3 :(得分:-2)

我发现解决方案首先检查内存泄漏,请在特定类中添加此行代码。

- (无效)viewWillAppear中:(BOOL)动画 {

[super viewWillAppear:YES];

}

这对我有帮助,我的问题得到了解决。