本文主要介绍无 StoryBoard 方式的 macOS APP 实现, 并给出具体代码.

通过普通的 macOS APP 模板新建工程后, 进行如下步骤即可:

  1. 删除 Main.storyboard(包括 info.plist 中的入口).

  2. 添加 main.swift:

    swift
    import Cocoa
    
    NSApplication.shared.delegate = AppDelegate()                       // 设置应用代理
    _ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)     // 启动应用
  3. 修改 AppDelegate 实现:

    swift
    import Cocoa
    
    class AppDelegate: NSObject, NSApplicationDelegate {
        var window: NSWindow?
    
        func applicationDidFinishLaunching(_ aNotification: Notification) {
            let mask: NSWindow.StyleMask = [.miniaturizable, .closable, .resizable, .titled]
            window = NSWindow(contentRect: .zero, styleMask: mask, backing: .buffered, defer: false)
            window?.makeKeyAndOrderFront(nil)
            window?.contentViewController = ViewController()
            window?.center()
        }
    }

    注意这里移除了 @NSApplicationMain 注解.

  4. 修改 ViewController 实现:

    swift
    class RootContentViewController: NSViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    
        override func loadView() {
            view = NSView(frame: NSRect(x: 0, y: 0, width: 480, height: 480))
        }
    }

经过上述步骤完成了 APP 的入口配置, 这样就可以开始后续的开发了, 如果需要 menu, 可以在 NSApplication.shared.mainMenu 上设置 menu.