V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hzzz0823
V2EX  ›  Xcode

想学 macOS app 开发, 请教一下入门选择

  •  
  •   hzzz0823 · 2023-04-11 14:38:45 +08:00 · 3526 次点击
    这是一个创建于 404 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想开发一个类似 paste 的工具 (想自定义一些功能满足自己需求).

    目前一头雾水, 想先确认和选择一些事情.

    1. 开发工具是否都是 xcode?

    2. 应该选择 Objective-C 还是 Swift 比较好

    3. 选择 interface 时, 应该选择 storyboard 还是 SwiftUI

    分享个用 gpt 的体验 (以我纯小白视角),

    1. 他给我的代码中让我去什么 ViewController 中写代码, 但我没这个文件, 我就告诉他我是用的 SwiftUI, 然后说着说着就又让我去 ViewController 了.

    我怀疑是网络上 swift 的预料太少?

    1. 我想监听复制事件, 他总是让我去监听 NSPasteboard.didChangeNotification, 但是 xcode 报错了, google 后似乎只有 ios 可以这么做, macos 不行. 我就告诉他没有这个, 结果他让我监听 NSPasteboardDidChangeNotification. 我直接无语.
    第 1 条附言  ·  2023-04-12 01:33:55 +08:00
    基本功能写完啦. 0 基础到完成这几个功能
    1. 全局快捷键激活&隐藏窗口
    2. 每次复制都会记录
    3. 可以搜索记录的内容
    4. 上下箭头可以选择要复制哪一条
    5. 按回车可以自动粘贴在上一个应用 (即隐藏这个 app 后, 粘贴到最上边显示的那个 app)
    6. 每次激活都会清空搜索栏

    基本一个 paste 工具基础的功就都有了, 下来就是界面和定制自己的一些需求
    需求整理:
    1. 我觉得这个面板要够大, 现在市面上的都不够大. (因为我有时候会找一些复制过的配置文件, 行数比较多)
    2. 要能对选中的记录通过快捷键直接添加到一个集合里, 顺便就充当了 snippet 的功能 (有点类似浏览器书签管理. 目前用过的操作起来都比较累, raycast 的好一点, 但 raycast 激活速度有点慢)
    3. 要让 2 的管理更好用可能需要边用边调
    4. 搜索功能要强, 宁愿误搜不能漏搜
    5. 通过"口令" 搜索, 比如基于 2 我建了一个密码集合, 里边有一条 "google password", 但是为了安全, 输入这个关键字不该搜出来, 可以设置成必须输入 "xxxx google password" xxxx 是自定义的密码 (因为我现在经常去 keeweb 查密码, 其实也就靠着一个 keeweb 的登录密码支撑着安全性, 所以安全性等价, 但是用 keeweb 路径太长了, 麻烦)
    6. 哦对了还不能复制粘贴图片.. 不过这个我一般用不到
    7. 够我写一段时间了.. 先做完再说吧

    感想:
    1. 感谢 GPT 🙏
    2. 很多实现方式很不优雅.. 但是能生效就先这么用着吧..
    21 条回复    2023-04-13 09:43:30 +08:00
    MakHoCheung
        1
    MakHoCheung  
       2023-04-11 15:02:59 +08:00
    1. 只能 Xcode ,因为 AppCode 已经凉了
    2. Swift
    3. 主 Storyboard ,辅 SwiftUI ,避免你想要的 UI 无法用 SwiftUI 实现

    PS. 找个兼职帮你写,比如我🐶
    Keanuo
        2
    Keanuo  
       2023-04-11 15:04:10 +08:00
    试试 gpt4 ,写 swift 的能力比 gpt3.5 强了不少
    fidetro
        3
    fidetro  
       2023-04-11 15:32:20 +08:00
    1.xcode
    2.爱用哪个用哪个,不过 mac 开发很难纯 swift
    3.除了 swiftUI 都可以,硬要用也行
    4.没用过这个通知,但是可以通过监听按下 command+c 实现类似的逻辑
    zimusjw2019
        4
    zimusjw2019  
       2023-04-11 16:20:13 +08:00
    https://github.com/dfzr86/Paste 参考一下.? 我现在就在用自己写的...
    当然也可以直接编译拿走去用..
    0littleboy
        5
    0littleboy  
       2023-04-11 16:25:29 +08:00
    弱弱问一句为啥 mac 开发用 switfui 有很多功能没法实现,iOS 好像大部分可以
    jay435990054
        6
    jay435990054  
       2023-04-11 16:26:11 +08:00
    怎么这么多学 mac 开发的 我开一门课程好了 收徒 收徒
    hzzz0823
        7
    hzzz0823  
    OP
       2023-04-11 17:21:19 +08:00
    @MakHoCheung 我也想. 但是我太穷了..
    Weiiiiii
        8
    Weiiiiii  
       2023-04-11 17:23:37 +08:00
    那不如考虑 Electron
    Cyshall
        9
    Cyshall  
       2023-04-11 17:58:42 +08:00
    @MakHoCheung #1 AppCode 凉了的消息从何而来🤔️
    liyunyang
        10
    liyunyang  
       2023-04-11 18:12:36 +08:00
    是不是还需要购买开发者帐号
    spike2017
        11
    spike2017  
       2023-04-11 19:13:57 +08:00
    @Cyshall JB 公告过不再更新
    wingkwanli888
        13
    wingkwanli888  
       2023-04-11 20:50:58 +08:00 via iPhone
    Tauri 和 Vue
    GP1
        14
    GP1  
       2023-04-11 21:03:05 +08:00
    有能力搞个 ChatGPT ,然后打开 Xcode 直接开干。
    或者下载 cursor 也行。
    wqzjk393
        15
    wqzjk393  
       2023-04-12 08:42:50 +08:00 via iPhone
    没人用 flutter 么
    agagega
        16
    agagega  
       2023-04-12 12:16:22 +08:00 via iPhone   ❤️ 4
    1. Xcode 是 IDE ,但是里面也提供了命令行工具,理论上整个开发流程可以不依赖 Xcode (否则 AppCode 是怎么实现的)。流言说苹果内部很多部门的程序员就没用 Xcode ,但这方面资料比较少,Xcode 更方便。

    AppCode 的好处是提示更稳定,更适合习惯 JetBrains 系的人,也有更多插件可以用。问题是官方不再支持,今年下半年新系统出正式版后就不好搞了。Xcode 也有插件系统,但好像开放的功能不多,AppCode 搭配 Copilot 体验很爽。

    2. 写 App 而言没太多理由用 Objective-C ,一些新的 API 已经仅支持 Swift 了。OC 的好处是语法稳定资料多,和 C++互操作很容易。我不觉得 OC 是个坏语言,但面向苹果平台开发 App 显然 Swift 更好。

    3. 我的感受是:SwiftUI 适合开发「 App 」,Storyboard/XIB/AppKit 适合开发「软件」。SwiftUI 可以很快速地创建一个长得标准的 UI 界面,如果你的目标只有一些 CRUD 操作那很合适,但有很多 API 都没适配或者很难适配 SwiftUI ,AppKit 可以做这些复杂的交互。

    4. 理解 ViewController 和整个面向对象体系是学习「旧」方法的核心。从 HTML/Vue/React 这些前端 MVVM 框架走过来的人会更快接受 SwiftUI ,而旧的 AppKit 是一个思想上完全不同的 MVC 技术体系:利用各种 ViewController 管理视图和相应事件,利用继承来复用各种 View 的内在逻辑。这个体系并不落后,只是适用场景不一样。

    5. macOS 和 iOS 有很多不一样,网上能找到不少对比。比如坐标系原点不同,iOS 上 TextView 是 ScrollView 的子类而 macOS 不是,macOS 因为更老所以 API 里的历史痕迹比较多。但这个在各种 IDE 提示+搜索加持下不是什么问题。

    macOS 开发应该是一个特别适合用 AI 加速的领域,因为文档实在是太少太乱了。
    hzzz0823
        17
    hzzz0823  
    OP
       2023-04-12 13:58:06 +08:00
    @agagega 非常感谢! 学习到很多知识!
    likeme
        18
    likeme  
       2023-04-12 15:51:42 +08:00
    @wqzjk393 flutter 开发 macos 不合适吧。。
    likeme
        19
    likeme  
       2023-04-12 15:52:03 +08:00
    @wqzjk393 目前还没用过 flutter 开发的 mac os 软件
    liuzhihang
        20
    liuzhihang  
       2023-04-13 01:44:22 +08:00 via iPhone
    剪贴板工具我用的 hapigo ,只用了剪贴板功能,这个不能独立出来害
    raykle
        21
    raykle  
       2023-04-13 09:43:30 +08:00
    剪切板工具一直用的 Alfred ,很顺手
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   845 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:09 · PVG 04:09 · LAX 13:09 · JFK 16:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.