iOS11崩溃NSMutableRLEArray replaceObjectsInRange:withObject:length ::越界

时间:2017-10-26 03:15:36

标签: crash ios11 foundation

我们的应用仅在iOS11中发现基金会崩溃。怎么解决?

Fatal Exception: NSRangeException
NSMutableRLEArray replaceObjectsInRange:withObject:length:: Out of bounds

0  CoreFoundation                 0x184f8bd38 __exceptionPreprocess
1  libobjc.A.dylib                0x1844a0528 objc_exception_throw
2  CoreFoundation                 0x184f8bc80 -[NSException initWithCoder:]
3  Foundation                     0x18587c168 -[NSMutableRLEArray replaceObjectsInRange:withObject:length:]
4  Foundation                     0x18588262c -[NSConcreteMutableAttributedString replaceCharactersInRange:withAttributedString:]
5  CoreFoundation                 0x184e65bec -[__NSArrayM enumerateObjectsWithOptions:usingBlock:]
6  UIKit                          0x18ec677b8 -[UILayoutManagerBasedDraggableGeometry draggableObjectsForTextRange:]

2 个答案:

答案 0 :(得分:0)

使用UITextInput

的方法时遇到了同样的问题
  

replaceRange:(UITextRange *)range withText:(NSString *)text;


我无法找到最佳解决方案,但我通过避免使用特殊字符来修复崩溃

  

在replaceRange方法的第二个参数

ps:此问题仅发生在iOS 11

答案 1 :(得分:0)

我可以通过一个示例应用程序在iOS 13.0 beta 4中重现它,该示例应用程序显示一个UITextView以及带有链接的特殊属性字符串。点按或拖动链接时会崩溃。

NSMutableAttributedString *aString = [[NSMutableAttributedString alloc] initWithString:@""];

NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
attachment.image = [[UIImage imageNamed:@"weblink"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
attachment.bounds = CGRectMake(0, 0, 15, 15);
[aString appendAttributedString:[NSAttributedString attributedStringWithAttachment:attachment]];

[aString appendAttributedString:[[NSAttributedString alloc] initWithString:@"  More Information"]];
[aString addAttribute:NSLinkAttributeName value:[NSURL URLWithString:@"https://www.apple.com"] range:NSMakeRange(0, aString.length)];

self.textView.attributedText = aString;

在Feedback Assistant上归档为FB6738178。