首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Swift 4.0 Cocoa应用程序中将标准输出重定向到NSScrollView?

在Swift 4.0 Cocoa应用程序中,可以通过以下步骤将标准输出重定向到NSScrollView:

  1. 创建一个自定义的NSFileHandle子类,用于捕获标准输出的数据。在该子类中,重写availableData方法来获取输出数据,并将其发送到一个通知中心。
代码语言:swift
复制
import Foundation

class OutputHandler: FileHandle {
    override func availableData() -> Data {
        let data = super.availableData()
        NotificationCenter.default.post(name: NSNotification.Name("OutputDataNotification"), object: data)
        return data
    }
}
  1. 在需要重定向标准输出的地方,将标准输出的文件句柄替换为自定义的OutputHandler实例。
代码语言:swift
复制
let pipe = Pipe()
let outputHandler = OutputHandler(fileDescriptor: pipe.fileHandleForReading.fileDescriptor)
FileHandle.standardOutput = outputHandler
  1. 创建一个NSScrollView实例,并将其设置为文本视图的父视图。
代码语言:swift
复制
let scrollView = NSScrollView()
scrollView.hasVerticalScroller = true
scrollView.autoresizingMask = [.width, .height]

let textView = NSTextView()
textView.isEditable = false
textView.isSelectable = true
textView.autoresizingMask = .width
scrollView.documentView = textView

// 添加scrollView到视图层次结构中
  1. 注册一个通知观察者,用于接收输出数据并将其显示在文本视图中。
代码语言:swift
复制
NotificationCenter.default.addObserver(forName: NSNotification.Name("OutputDataNotification"), object: nil, queue: nil) { notification in
    if let data = notification.object as? Data, let outputString = String(data: data, encoding: .utf8) {
        DispatchQueue.main.async {
            textView.string += outputString
            textView.scrollToEndOfDocument(nil)
        }
    }
}

通过以上步骤,标准输出的数据将被捕获并显示在NSScrollView中。这在调试和记录应用程序输出时非常有用。

推荐的腾讯云相关产品:腾讯云服务器(CVM),产品介绍链接地址:https://cloud.tencent.com/product/cvm

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux如何在Bash中将标准错误stderr重定向stdout标准输出

将命令的输出重定向文件或将其通过管道传递另一个命令时,你可能会注意错误消息已打印在屏幕上。 在Bash和其他Linux Shell中,执行程序时,它使用三个标准I/O流。...程序输出进入标准输出流,错误消息进入标准错误流。默认情况下,输入流和错误流都打印在屏幕上。 重定向标准输出重定向是一种从程序捕获输出并将其作为输入发送到另一个程序或文件的方法。...流可以使用n>运算符重定向,其中n是文件描述符。 省略n时,默认为标准输出流1。例如,以下两个命令是相同的;两者都会将命令输出(stdout)重定向文件。...重定向stdout 将程序的输出保存到文件中时,通常会将stderr重定向stdout,以便将所有内容都保存在一个文件中。...要将stderr重定向stdout并将错误消息发送到与标准输出相同的文件,请使用以下命令: command > file 2>&1 > file将stdout重定向file,2>&1将stderr重定向

3.3K20

试水 Mac 开发 —— 代码生成器

这个时候我还没有意识自己已经一只脚踏进坑里,我心想难道 NSTextView 是 NSScrollView 的子类?那我手动把它改成 NSTextView 吧……然后迎接我的是各种 crash。...后来仔细揣摩了一下 Storyboard 里控件的层级关系,我发现之前真的只是单纯地连了个 NSScrollView 代码中,真正的 NSTextView 在一个奇怪的地方: ?...JSONSerialization.jsonObject(with: data, options: []) } JSON 对象有了,我们还需要把属性名进行标准化。...你需要在你投入生成器的努力和你花在修正其输出上的精力之间进行权衡。...在 Mac 开发中使用 RxSwift 感觉 RxCocoa 对 Cocoa 的支持并不好,譬如没有为 NSTextView 和 NSTextField 提供 rx.string、rx.stringValue

72320

在Ubuntu搭建Swift Web框架Vapor

Swift一样,Vapor快速而现代,它支持您在Web框架中为其他编程语言看到的许多功能。 本教程中将教您如何在Ubuntu上安装Swift和Vapor。.../builds/swift-4.0-release/ubuntu1604/swift-4.0-RELEASE/swift-4.0-RELEASE-ubuntu16.04.tar.gz.sig 要验证此签名文件...,请运行下一个命令,该命令如下: gpg --verify swift-4.0-RELEASE-ubuntu16.04.tar.gz.sig 您会看到此输出结果: gpg: assuming signed.../check.vapor.sh 看到此输出结果表明Vapor已成功安装: ✅ Compatible with Vapor 2 现在已经安装了Swift和Vapor,您可以创建第一个Vapor应用程序。...构建过程完成后,使用以下命令运行应用程序: vapor run serve 服务器将启动,显示此输出结果: Running demo ... ...

2.2K20

汇编寄存器的规则

# 汇编寄存器的规则 在本章中,您将了解 CPU 使用的寄存器,并研究和修改传入函数的参数。您还将了解常见的苹果计算机架构,以及如何在函数中使用它们的寄存器。这就是所谓的架构调用约定。...此外,您还可以找到一个十六进制的数字常量, 0x228。这个常数之前的美元符号告诉你它是一个绝对值。现在不需要知道这段代码在做什么,因为您首先需要了解每个符号的含义。...如果对使用的硬件架构有疑问,可以在终端中运行以下命令来获取计算机的硬件架构: uname -m 在能耗要求很高的移动设备( iPhone)上使用 ARM64 体系结构。...确保单击 NSScrollView 的外部,因为 NSScrollView 它会拦截您的单击,并且不会命中 -[NSResponder mouseUp:] 断点。...在 Registers 项目中,导航 ViewController.swift 并将以下函数添加到该类: func executeLotsOfArguments(one: Int, two: Int,

2.4K50

手绘风格绘画白板:自由创作艺术空间 | 开源日报 No.118

它提供了一系列工具来帮助你构建、增长和盈利你的应用程序。...主要功能和核心优势如下: 提供多种安装方法:标准 pod install、Swift Package Manager、从 GitHub 仓库安装以及实验性 Carthage。...主要功能: 无限画布 手绘风格 暗黑模式 多种工具矩形、圆形等 箭头捆绑与标记箭头 撤销/重做操作 缩放和平移支持 可定制性强 图片与形状库支持 导出至 PNG,SVG & 剪贴板 本地化 (i18n...) 支持 uber-go/goleak[3] Stars: 4.0k License: MIT goleak 是一个 Goroutine 泄漏检测器,旨在帮助避免 Goroutine 的泄漏。...自定义输出格式:除了默认表格形式外,还可以将结果导出为 CSV 或 JSON 格式,并且支持 JUnit XML 输出格式,方便进一步集成其他工具中去处理数据。

14410

WWV 2018年十大必看视频

在示例应用程序中,Soup Chef,Apple演示了如何对快捷方式进行分类,然后添加一些参数,字符串,数字,人物或位置。一旦捐赠给Siri,您可以通过说出您提供的短语来触发快捷方式。...您甚至可以利用Apple的现成模型利用转移学习来增强培训 - 将培训时间从几小时缩短几分钟。这也进一步将模型的大小从数百兆字节减少仅仅屈指可数。...您的输出文件也可以放在文件列表中。 声明输入文件很重要。如果输入文件发生变化,Xcode知道它需要运行Run Script阶段。此外,如果输出文件丢失,Xcode可以为您重新生成这些文件。...在Objective-C代码中使用无名类别来隐藏Swift中不需要的东西,或者将项目移动和隐藏实现文件中。 迁移到Swift 4,它也针对更快的构建进行了优化。...使用Swift标准库中的函数,Abrahams解释了如何使用算法驱动的方法。 “他谈到了除了准备技术访谈之外理解算法的重要性。

2.7K20

WWDC 2018年十大视频评论

有最新API的视频,ARKit 2,Core ML 2,Create ML和Siri Shortcuts; 通过新的Dark Mode支持和改进的源代码编辑覆盖Xcode 10; 然后是Swift 4.2...在示例应用程序中,Soup Chef,Apple演示了如何对快捷方式进行分类,然后添加一些参数,字符串,数字,人物或位置。一旦捐赠给Siri,您可以通过说出您提供的短语来触发快捷方式。...您的输出文件也可以放在文件列表中。 声明输入文件很重要。如果输入文件发生变化,Xcode知道它需要运行Run Script阶段。此外,如果输出文件丢失,Xcode可以为您重新生成这些文件。...在Objective-C代码中使用无名类别来隐藏Swift中不需要的东西,或者将项目移动和隐藏实现文件中。 迁移到Swift 4,它也针对更快的构建进行了优化。...使用Swift标准库中的函数,Abrahams解释了如何使用算法驱动的方法。 “他谈到了除了准备技术访谈之外理解算法的重要性。

3.3K20

2021 年 iOS 应用程序开发七种最佳语言

您可以进行调查或使用客户细分,然后根据国籍、年龄、性别或其他标准制作平均目标用户的个人资料。 此类操作将允许您创建定制的营销活动,从而最大限度地提高下载量。 ...Swift 旨在与 CocoaCocoa Touch 等框架以及用 Objective-C 为 Apple 产品编写的大量代码库一起使用。 ...如果您想相对快速地创建一个以后可以轻松扩展的应用程序Swift 将是一个不错的选择。该语言相对容易学习并确保快速的开发过程,以及编写安全可靠的代码。...它是一种通用语言,主要用于为 Apple 的操作系统( OS X 和 iOS)及其 API:CocoaCocoa Touch 进行编程。 ...该解决方案将使您能够节省时间和金钱,而且 - 考虑它在世界上最流行的移动应用程序中的流行度 - 您可以确定它是一个经过验证的解决方案。 7.

4.5K40

开源日报 0825 | 简化开发过程,提升Swift应用性能的扩展工具库

它建立在社区验证过的代码基础上,具有以下主要功能: 实现了 ERC20 和 ERC721 等标准。 灵活的基于角色的权限控制方案。...该项目主要功能如下: 提供了超过 500 个原生 Swift 扩展,覆盖了广泛的基本数据类型、UIKit 和 Cocoa 类。...改善应用程序性能并降低内存占用。 兼容各种平台 (iOS、macOS 等) 以及不同版本的 Swift 语言。...主要功能包括: 101 种语言的语音输入 96 种语言的文本输入/输出 35 种语言的语音输出 该统一模型实现了多个任务而无需依赖于多个单独模型: 从声音声音 (S2ST) 翻译 从声音文字 (S2TT...) 翻译 文字声音 (T2ST) 翻译 文字文字 (T2TT) 翻译 自动说话认别 (ASR) 核心优势和特点包括:支持广泛的输入和输出格式、使用 fairseq2 库进行序列建模、基于 SONAR

28720

使用Process的StandardInput与StandardOutput写入读取控制台数据

以上是必备的应用程序,如果不使用该程序,可以使用System32文件夹下的cmd.exe来当做控制台应用程序; 二、将以上生成的程序Test.exe拷贝D盘根目录下; 三、新建一个控制台应用程序(MainConsoleApp...:是否以没有窗体的模式创建应用程序,默认为false,即有窗体,为true,即隐藏窗体。...在这里不设置该值也可以; ProcessStartInfo.RedirectStandardInput:标准输入流的重定向重定向至Process,我们可以通过Process.StandardInput.WriteLine...将数据写入标准流; ProcessStartInfo.RedirectStandardOutput:与RedirectStandardInput相反,这是标准输出流的重定向,我们可以通过Process.RedirectStandardOutput.ReadLine...这个技术不仅仅可以用于以上的示例,还可以用于其他具有控制台输入输出的程序,cmd.exe,这里不进行举例,自己进行试验即可。

2.7K00

5 种可能在 10 年后消失的编程语言

我们在这篇文章中将一起看一看5种有可能会在未来10年后消失的开发语言。我们明白,其中有些语言可能是部分人的心头好,所以在正文开始前,还是希望大家尽量客观的看待。 1. Ruby ?...Ruby在1999年发布后立即受到热捧,程序员们印象最深的就是它能让他们快速构建应用程序。...考虑Visual Basic可能是最不受欢迎的编程语言之一,把它放在这个列表中也是合乎逻辑的。Visual Basic由微软在1991年发布,作为构建Windows的主要工具,也确实实现了这一目的。...这一切都要归功于SwiftSwift由苹果公司开发,于2014年正式发布,旨在成为MacOS、iOS和其他几个与苹果相关的平台的新开发语言标准。...虽然Obj-C在很大程度上是基于复杂的C语言,但Swift则有效地去掉了这些元素,同时添加了全新的功能,自动内存管理、对Cocoa Touch的支持和类型安全集成。

56230

除了JavaScript,2024年还有哪些“钱景”十足的编程语言值得我们学习

Python还能够用来开发桌面应用程序。通过Tkinter、PyQt、Kivy等库,开发者可以为Linux、Windows、macOS平台创建各种应用程序IDE、实用工具、游戏等。...它是完全开源的,并与苹果的CocoaCocoa Touch框架一起工作。 Swift的主要用途是开发苹果平台(iOS、iPadOS、macOS、watchOS和tvOS)的应用和游戏。...后端Web服务:Swift可与服务器端框架(Vapor和Kitura)一起使用,构建API。 游戏开发:像SpriteKit和SceneKit这样的游戏引擎使用Swift在苹果平台上开发游戏。...网页开发:流行的框架Play允许使用Scala构建网页应用程序和服务。 云应用:Scala适用于AWS、GCP等平台的无服务器/微服务架构。...结束 正如我们看到的,这些编程语言不仅在2024年具有巨大的市场需求,而且它们在未来的技术发展中将发挥关键作用。

81810

除了JavaScript,2024年还有哪些“钱景”十足的编程语言值得我们学习

Python还能够用来开发桌面应用程序。通过Tkinter、PyQt、Kivy等库,开发者可以为Linux、Windows、macOS平台创建各种应用程序IDE、实用工具、游戏等。...它是完全开源的,并与苹果的CocoaCocoa Touch框架一起工作。 Swift的主要用途是开发苹果平台(iOS、iPadOS、macOS、watchOS和tvOS)的应用和游戏。...后端Web服务:Swift可与服务器端框架(Vapor和Kitura)一起使用,构建API。 游戏开发:像SpriteKit和SceneKit这样的游戏引擎使用Swift在苹果平台上开发游戏。...网页开发:流行的框架Play允许使用Scala构建网页应用程序和服务。 云应用:Scala适用于AWS、GCP等平台的无服务器/微服务架构。...结束 正如我们看到的,这些编程语言不仅在2024年具有巨大的市场需求,而且它们在未来的技术发展中将发挥关键作用。

44910

如何用Swift重写C++ObjC代码库,并将其缩减70%

它最初是在 Macintosh 内部编写的经典 Mac API,然后是 Carbon,再是 Cocoa、AppKit & UIKit,现在是 SwiftUI。...在为我们的 iOS 产品添加了 AR 支持后,受 AR 在儿童故事书中使用的启发,我构建了一个原型应用程序,探索如何在数学教育中使用 AR。...该应用程序主要是用 C++ 和 ObjectiveC++ 编写的。原型使用 ARKit 进行视觉和机器学习,虽然在 Objective-C 中这是可行的,但在 Swift 中它会更容易。...数十年的迭代改进以及对每个版本的低层优化为性能设定了一个很高的标准。在性能临界(performance-critical)代码中驾驭 Swift 的无数不安全 API 虽然很困难,但也很有效。...是否值得我花时间将其移植 Swift 上?我很喜欢学习 Swift,并且对现在的代码状态也很满意。用 Swift 写作纯粹是一种快乐。自 80 年代开始,我一直就在打算最终要开源我的代码。

89840

iOS学习——iOS 整体框架及类继承框架图

开发一个应用程序就是将需求细致化的代码插入框架提供的设计中来组合成一个整体完成最终的应用设计。...Accounts账户框架,广告框架,数据存储框架,网络连接框架,地理位置框架,运动框架等等。...,解释一下,官方文档中将OS体系分为四层,如下图所示,没有Cocoa Touch Layer和Application Layer,取而代之的是Cocoa (Application) Layer。...二 Cocoa框架的类继承体系   Cocoa框架是iOS应用程序的基础,是OS X和 iOS操作系统的程序的运行环境,了解Cocoa框架,对开发iOS应用有很大的帮助。...框架的入口: #import   ,当引入此头文件后,便可以在程序里使用任何在UIKit里声明的类。(PS: 当然还要把这个框架链接到你的应用程序中)。

3.4K70

V,新编程语言来袭!与Go类似,跟C一样快

编译器介绍 在编译器目录下,有8个文件,未来有望减少7个。...如果解析成功,则通过合并解析器的输出并仔细排列所有定义来生成单个C文件。 最后,调用C编译器来编译此C文件并生成可执行文件或库。 parser.v 这是编译器的核心。...V的功能及表现 整个语言及其标准库小于400KB。V就是用V语言携程的,你可以在0.4秒内构建它,今年年底,这个数字将下降到≈0.15秒。 ? 请看对比: ?...基于GDI+/Cocoa Drawing构建的跨平台绘图库,以及基于OpenGL的图形库,用于更复杂的2D/3D应用程序。...即使对于GUI和图形应用程序,也无需额外的步骤! 其他更多特性可以去官网阅读开发文档。 最终表现如何呢?

1.3K40

实用收藏Linux命令备忘

sudo chown -R root:root jdk-7u21-linux-i586.tar.gz 重定向 说明:Linux系统中标准的输入设备为键盘,标准输出设备为屏幕,但在某些情况下,我们希望能从键盘以外的其他输入设备读取数据...,或者将数据送到屏幕外的其他输出设备,这种情况称为重定向。...命令“wc < f1”就表示将f1文件的信息作为wc命令的输入。 输出重定向输出重定向是将命令的输出结果重定向一个文件中,而不是显示在屏幕上。...输出重定向使用“>”或“>>”操作符,分别用于覆盖、追加文件。“>”重定向符后面指定的文件如果不存在,在命令执行中将建立该文件,并保存命令结果文件中。...“>”重定向符后面指定的文件如果存在,命令执行时将清空文件的内容并保存命令结果文件中。 #查看/etc/passwd文件的内容,并将输出结果保存到pass.txt文件中。

1.1K60

Flutter Platform Channels(一)

这意味你的Dart代码并不会直接访问平台特定的API,即 iOS Cocoa Touch 以及 Android SDK的API。 如果你只是通过Dart在屏幕上绘制像素并不会有太多部分。...首先,Flutter由Android或iOS应用程序环境托管。应用程序的Flutter部分包含在标准的平台特定组件中,例如Android上的View以及iOS上的UIViewController。...Dart。...---- 使用二进制消息,你需要考虑十分精细的细节,字节序以及如何使用字节表示更高级别的消息,字符串或映射。 每当要发送消息或注册handler时,还需要指定正确的通道名称。...现在,BasicMessageChannel最初名为MessageChannel,但已经被重命名了,以避免在代码中将MessageChannel与MethodChannel混淆。

4.4K01

为 ASP.NET Core 程序制作 URL 的 301302 跳转

本文描述如何在 ASP.NET Core 中进行重定向。 ---- HTTP 状态码 301/302 301 表示“Moved Permanently”,即永久移动。...于是在后来的 HTTP 标准中将浏览器的错误实现变成了标准,301 和 302 方法要求使用 GET 方法重定向。...如果我们将此 URL 重定向不带后缀的 URL,则可以被 Blazor 框架识别并正确显示对应的博客页面。...我们有两个不同的方式来实现这种 URL 的重定向: 做一个重定向的控制器 Controller,然后在控制器中重定向所有的博客页面 做一个重定向的中间件,对所有包含 .html 后缀的博客页面重定向没有...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

3.8K10
领券