Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将NSTextView与NSScrollView一起使用时,Cocoa应用程序挂起_Objective C_Cocoa_Appkit_Nstextview_Nsscrollview - Fatal编程技术网

Objective c 将NSTextView与NSScrollView一起使用时,Cocoa应用程序挂起

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选

我正在读取一些文件内容,并尝试使用NSScrollView在NSTextView上显示。 当我试图显示一个很大文件的内容时,我的应用程序挂起。实际情况是:

  • 打开文件
  • 在NSData中读取其内容并将其转换为NSString
  • 创建一个滚动视图
  • 创建一个NSTextView
  • 将上面创建的NSString设置为NSTextView
文件大小非常大。它包含大约106010441行

我的应用程序能够成功地显示文件的初始内容,直到我向下滚动它开始挂起并变得非常慢。 若我点击文本区域并按command+a选择全部并开始滚动,它将完全冻结

我不知道我做错了什么

以下是我的ViewController.m内容:

#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中打开大文本文件吗?