NSTextStorage在replaceCharactersInRange的时候遇到EXC_BAD_ACCESS


我想在NSTextView中替换某段文本,比如把 aaaaaa 替换成 bbb 。但当我使用replaceCharactersInRange时老是遇到内存异常的错误,这里是代码


 NSTextStorage *textStorage = [textView textStorage];
NSRange found = NSMakeRange(0, 1);

[textStorage beginEditing];
[textStorage replaceCharactersInRange:found withString:@"bbb"];
[textStorage endEditing];

这个range我可以保证是完全在范围内的。而且我发现如果我把range的length改成跟替换的字符串一样长,它就不会报错。比如这里我要替换成 @"bbb" ,那么我把 NSRange found = NSMakeRange(0, 3); ,就不会报错。

但大多数情况下,我们替换的两种字符串都不是一样长的啊,为什么老会崩溃呢?

objective-c macosx cocoa

黑化八雲紫 10 years, 9 months ago

Your Answer