初めての Mac アプリであるテキスト エディターを作成しています。これはドキュメントベースであり、Document.xib には nstextview があります。Document クラスをテキストビューのデリゲートにしました。私はメソッドを実装しています:
-(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 にある場合にのみ、その例外がスローされます。
誰が何が起こっているのか知っていますか?