1
我正在嘗試檢測將對用戶輸入的新文本應用的格式。這意味着光標有一個位置,但沒有文本選擇(即長度= 0)。每次我嘗試查詢typingAttributes時,即使只是記錄,應用程序也會崩潰。NSAttributedString typingAttributes導致崩潰
Thread 1:EXC_BAD_ACCESS (code=2, address=0x4)
在調試導航出現這種情況的最後一件事是:
WebCore::Frame::styleAtSelectionStart() const
而在此之前只是,我看到
-[UITextView typingAttributes]
如果我登錄了selectedRange.length大於0 ,它似乎很好。我試過運行殭屍和Guard Malloc啓用,但沒有看到任何東西。
在我的測試項目,崩潰只要UITextView中變得發生firstResponder:
- (void)textViewDidChangeSelection:(UITextView *)textView
{
[self updateFormatButtons];
}
其中要求檢查的屬性:
- (void)updateFormatButtons
{
UITextView *problemTextView = [self synopsisTextView];
NSRange selectedRange = [self getSelectedTextRange];
if (selectedRange.length == 0) // No text selected
{
// HELP - Why does the following line cause a crash?
// NSLog(@"textViewFormatting options: %@", [problemTextView typingAttributes]);
}
else
{
NSLog(@"Some text selected"); // Fine here
NSLog(@"textViewFormatting options: %@", [problemTextView typingAttributes]);
}
}
根據所選擇的範圍:
- (NSRange)getSelectedTextRange
{
NSRange rangeToReturn = NSMakeRange(NSNotFound, 0);
UITextView *textView = [self synopsisTextView];
if ([textView isFirstResponder])
{
rangeToReturn = [textView selectedRange];
}
return rangeToReturn;
}
建議感激。