Я создаю свое первое приложение для 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.
Кто-нибудь знает, что происходит?