【发布时间】:2013-07-31 10:00:01
【问题描述】:
我正在创建我的第一个 Mac 应用程序,一个文本编辑器。它是基于文档的,并且 Document.xib 有一个 nstextview。我已将 Document 类设为 textview 的代表。我正在实施该方法:
-(void)textViewDidChangeSelection:(NSNotification *)notification
{
NSRange range=self.textView.selectedRange;
NSLog(@" %@ ",[[self.textView textStorage] attributesAtIndex: range.location
effectiveRange: &range]);
我将使用 NSLog 中的方法调用来获取所选文本的属性并从该通知方法更新下划线按钮(按下 或不)。 问题是当应用程序运行并且我按下一个键时会引发异常: 引发了未捕获的异常
*** -[NSConcreteTextStorage attributesAtIndex:effectiveRange:]: Range or index
out of bounds
我尝试通过 @try: @catch: 块进行调试,似乎上述方法总是抛出该异常。如果我更换:
range.location
与
(range.location-1)
仅当光标位于索引 0 时才会引发该异常。
有人知道发生了什么吗?
【问题讨论】:
-
range.location-1 在 self.textView.selectedRange==0 时将是一个无效数字(没有选择,或者它从一开始就开始。
标签: objective-c cocoa nstextview