问题
I have been receiving a bunch of crash reports that look a lot like the following with different values for the range. Sometimes the range is not 0-x it could be say 2-x
Application Specific Information:* Terminating app due to uncaught exception \'NSRangeException\',reason: \'* -[NSBigMutableString substringWithRange:]: Range {0, 69} out of bounds; string length 0\'
Last Exception Backtrace:
0 CoreFoundation 0x2e879e83 __exceptionPreprocess + 131
1 libobjc.A.dylib 0x38bd66c7 objc_exception_throw + 38
2 CoreFoundation 0x2e879dc5 +[NSException raise:format:] + 112
3 Foundation 0x2f1a1bd1 -[NSString substringWithRange:] + 120
4 UIKit 0x311b2815 -[NSTextStorage(UIKitUndoExtensions) _undoRedoAttributedSubstringFromRange:] + 132
5 UIKit 0x315d9679 -[_UITextUndoOperationTyping undoRedo] + 296
6 Foundation 0x2f296453 -[_NSUndoStack popAndInvoke] + 250
7 Foundation 0x2f2952ef -[NSUndoManager undoNestedGroup] + 454
8 UIKit 0x3127a147 -[UIApplication alertView:clickedButtonAtIndex:] + 142
9 UIKit 0x31216449 -[_UIModalItemsCoordinator _notifyDelegateModalItem:tappedButtonAtIndex:] + 144
10 UIKit 0x3121638d -[_UIModalItemAlertContentView tableView:didSelectRowAtIndexPath:] + 1000
11 UIKit 0x3111b0cb -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 1078
12 UIKit 0x311ce863 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 214
13 UIKit 0x3107e781 _applyBlockToCFArrayCopiedToStack + 316
14 UIKit 0x30ff67bb _afterCACommitHandler + 430
15 CoreFoundation 0x2e844f69 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 20
16 CoreFoundation 0x2e8428f7 __CFRunLoopDoObservers + 286
17 CoreFoundation 0x2e842c43 __CFRunLoopRun + 738
18 CoreFoundation 0x2e7ad471 CFRunLoopRunSpecific + 524
19 CoreFoundation 0x2e7ad253 CFRunLoopRunInMode + 106
20 GraphicsServices 0x334e72eb GSEventRunModal + 138
21 UIKit 0x31062845 UIApplicationMain + 1136
22 MyApp 0x00071f3b main (main.m:18)
23 libdyld.dylib 0x390cfab7 start + 2
回答1:
If you set UITextView's text property after user edit it, it seems that you need to call [textView.undoManager removeAllActions] to clear undo history.
来源:https://stackoverflow.com/questions/20751548/strange-crash-in-uitextview-undo-on-ios-7