在搁置了很久之后,我终于决定开始写一个念想了很久的小工具。我希望它实现的功能很简单:当我清洁 MacBook 的键盘与触摸板时,这个小工具会帮我禁用键盘,以防误触。同时,将屏幕调至黑色,以帮助我清洁屏幕上的污点。
我知道 OneSwitch 提供了这个功能,并且我很久之前就买了 OneSwitch 。但是嘛,人生中总有那么一些时刻,你想要自己创造些什么,尽管并不是什么了不起的创造。就像小时候用橡皮泥捏的小狗,尽管是个龇牙咧嘴歪瓜裂枣的丑小狗,但你依然会为此感到骄傲和快乐。
况且,在写习惯了 C#之后,我也对 Swift 和 SwiftUI 充满了好奇。我想,这是一个学习掌握新技能的好机会。
我觉得这个任务会很简单,尽管我从未有任何编写 macOS 软件以及 Swift 和 SwiftUI 的经验。但是我想,嘿,这个简单的小工具实现起来能有多难呢?况且,在 ChatGPT 的帮助下,我觉得应该半小时就能完成。
事实证明,我既高估了自己,也高估了 ChatGPT 。
当我喂给 ChatGPT 一些提示词后,它给我生成了一些看起来还像模像样的代码。我凭借自己的半吊子 C#经验,把我觉得会生效的部分粘贴到 Xcode 中——让窗口进入全屏只需要一个 .fullScreenCover()
嘛,简单。
然后 Xcode 就报错了。
我看着鲜红的报错,脑子里只有一个念头:I have totally no fucking idea what I’m reading.
虽然我能看懂报错的意思,但我完全不知道要怎么解决。Google 了一圈,大部分答案都和 ChatGPT 给出的一模一样。在各个论坛和站点里逛了一圈,才知道.fullScreenCover()
不适用于 macOS 。又找了一圈,才在一个论坛里找出一串能用的代码:
.onAppear() {
Task { @MainActor in NSApplication.shared.windows.last?.toggleFullScreen(nil) }
}
我看着这串代码,脑子里只有一个想法:I have totally no fucking idea what I’m doing.
但这不重要,至少我们实现了第一步:让这个小工具全屏运行。
接下来我们要让这个小工具显示黑色的背景。这一步倒是很简单,ChatGPT 至少给出了基本正确的答案。在把代码复制进 Xcode 然后缝缝补补之后,我们果然得到了纯净的黑色背景。之后,我又实现了一个简单的退出程序的功能。
当我做完这些工作,我发现已经过去了接近三个小时。而我只在项目里新增了八行代码——还包括注释。但是,尽管这个小工具非常简陋;尽管它还缺失了很多关键功能,比如屏蔽键盘快捷键;尽管这八行代码里有三行我都完全不知道是什么意思。可是当我把它运行起来的时候,我还是感到非常愉悦。
这是我的潦草小狗,它很潦草,但我很喜欢它。
我把这个项目发布到了 GitHub ,你可以在这里查看它。在接下来的时间里,我会慢慢完善这个小工具,希望它在将来会给各位提供一些帮助。我也准备借这个机会好好学习一下 Swift ,至少能看懂自己的项目。不过现在,我准备休息一下,喝杯咖啡,然后和我的伴侣分享这个消息:“嘿,你看,我捏了一个潦草小狗。”
Bonus:在 YouTube 上有一个搞笑视频,可以完美的描述我在写这个项目时的心情。在这里分享给各位。 https://www.youtube.com/watch?v=rR4n-0KYeKQ
1
pxiphx891 239 天前
很棒
|
2
7VO54YYGvw3LOF9U 239 天前 via iPhone
TL;DR
关机不就行了 |
3
LK99 239 天前
@hugi #2
~ ❯ uptime 19:49 up 119 days, 17:04, 7 users, load averages: 2.17 2.18 2.27 MacBook 的用法之一是尽量不关机。 |
5
chuck1in 239 天前
swift 的东西做的这么差劲吗?
另外想问下 op 你做的这种工具如果想要给其他用户使用的话,是不是必须要上 appstore 才行,这就涉及到要备案? |
7
x4gz 239 天前
为什么要搜索报错 直接把报错作为后续问题问 chatgpt 不就行了
|
8
goldenlove 239 天前
|
9
esrkforward OP @x4gz 尝试很多次把报错喂给 ChatGPT ,但是始终给出的都是错误的回答
|
10
esrkforward OP @goldenlove 是的,我知道有许多类似的工具。主要是出于好玩自己造个轮子,顺便学习下 Swift
|
11
esrkforward OP @chuck1in 不必须上 App Store ,可以直接分发安装包。
|