Objective c 将NSTextView与NSScrollView一起使用时,Cocoa应用程序挂起
我正在读取一些文件内容,并尝试使用NSScrollView在NSTextView上显示。 当我试图显示一个很大文件的内容时,我的应用程序挂起。实际情况是:Objective c 将NSTextView与NSScrollView一起使用时,Cocoa应用程序挂起,objective-c,cocoa,appkit,nstextview,nsscrollview,Objective C,Cocoa,Appkit,Nstextview,Nsscrollview,我正在读取一些文件内容,并尝试使用NSScrollView在NSTextView上显示。 当我试图显示一个很大文件的内容时,我的应用程序挂起。实际情况是: 打开文件 在NSData中读取其内容并将其转换为NSString 创建一个滚动视图 创建一个NSTextView 将上面创建的NSString设置为NSTextView 文件大小非常大。它包含大约106010441行 我的应用程序能够成功地显示文件的初始内容,直到我向下滚动它开始挂起并变得非常慢。 若我点击文本区域并按command+a选
- 打开文件
- 在NSData中读取其内容并将其转换为NSString
- 创建一个滚动视图
- 创建一个NSTextView
- 将上面创建的NSString设置为NSTextView
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
/
NSString * path = Path_to_file;
NSFileHandle * fileHandle = [NSFileHandle fileHandleForReadingAtPath:path];
NSData * buffer = [fileHandle readDataToEndOfFile];
raw_string = [[NSString alloc] initWithBytes:[buffer bytes] length:[buffer length] encoding:NSUTF8StringEncoding];
}
- (void)setRepresentedObject:(id)representedObject {
[super setRepresentedObject:representedObject];
}
- (IBAction)button:(id)sender {
_Scroller.hasVerticalScroller = YES;
_Scroller.hasHorizontalScroller = YES;
_Scroller.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
NSSize contentSize = _Scroller.contentSize;
NSTextView* _textView = [[NSTextView alloc] initWithFrame:NSMakeRect(0, 0,
contentSize.width, contentSize.height)];
_textView.minSize = NSMakeSize(0.0, contentSize.height);
_textView.maxSize = NSMakeSize(FLT_MAX, FLT_MAX);
_textView.verticallyResizable = YES;
_textView.horizontallyResizable = YES;
_textView.autoresizingMask = NSViewWidthSizable;
_textView.textContainer.containerSize = NSMakeSize(contentSize.width, FLT_MAX);
_textView.textContainer.widthTracksTextView = YES;
_textView.automaticSpellingCorrectionEnabled = NO;
_textView.continuousSpellCheckingEnabled = NO;
_Scroller.documentView = _textView;
_textView.string = raw_string;
}
@end
在这一点上它有点旧了,但是可以看看TextEdit示例代码中的设置:在滚动视图和文本视图之间添加剪辑视图。创建一个Xcode项目,在Interface Builder中添加一个文本视图,并检查视图层次结构和自动调整大小的掩码。它是否与一个小文本文件一起工作?@Willeke yes,它正在处理较小尺寸的文本文件。您可以在TextEdit中打开较大的文本文件吗?此时它有点旧,但可以查看TextEdit示例代码中的设置方式:在滚动视图和文本视图之间添加剪辑视图。创建一个Xcode项目,在Interface Builder中添加一个文本视图,并检查视图层次结构和自动调整大小的遮罩。它是否可以处理小文本文件?@Willeke是的,它可以处理较小的文本文件您可以在TextEdit中打开大文本文件吗?