macOS学习笔记--使用纯代码构建macOS应用

in macOSSwift with 0 comment

NO.1 The Start

起初,由于拖延症,这篇文章我不想发的,但是纯代码构建项目的demo又写好了.前两天群里的朋友又问我要纯代码的demo.索性就借着机会把demo扔出来好了.给自己的懒癌加强一针.

NO.2 The Message

首先,从项目的结构开始看起.(因为懒,并没有做MVC分层,只是完成了基本的实现)

首先,最大的问题就是main.swift这个入口文件.默认的macOS工程是没有这个文件的.既然要用纯代码构建,那就把info.plist文件里面的指定Storyboard文件的部分删掉.这个跟iOS开发还是一模一样的.然后删掉Main.storyboard这个文件,反正没用了.删掉就是了.

然后,开始手写入口的main函数.在这里,你需要做两件事.第一,就是在实例化NSMenu对象.因为把storyboard删掉了,所以如果不实例化NSMenu的话,你得程序启动起来,左上角的菜单将空空如也.第二,就是手动实例化应用.因为是从头开始写,所以之前自动帮你生成的东西你也要自己写一遍(阿西巴,代码好多.具体见末尾的GitHub).当然了,快捷键也要自己绑定,这时候,你就可以随意开脑洞了,比如,⌘+Q改成新建......

iOS的程序都是单窗口的,所以没有WindowController这个概念,而macOS不一样,如果是单窗口就坏事了.所以引入了WindowController这个概念,其实这个跟ViewViewController是差不多的.所以对Window的所有操作直接写在WindowController里面就好了.对View的操作写在ViewController里面.

由于是纯代码工程.所以我们需要手动创建自己的WindowControllerViewController.然后,在AppDelegate.swift里面对WindowController进行实例化.注意注释掉@NSApplicationMain.最后使用WindowControllershowWindow方法把这个窗口显示出来.

然后,在WindowController里面初始化Window.定义Window的大小,座标以及各种属性.然后重写init方法和init?(coder:)方法.最后,在init方法里面实例化ViewController.

剩下的在ViewController里面实例化View就跟iOS差不了太多了.

最后,⌘+R运行一下,只要没有语法错误,这时候应用就已经启动了.然后你就会发现,WTF!!!写了这么多,就一个白板.....就是下面这个.

啥都没有,干净的像是白瓷砖....所以说,没有什么特殊的需求,不要使用纯代码....第一是累,第二嘛,就是麻烦.很多东西明明自动处理好了,但是还是要自己手写.比如上面的NSMenu.如果真的要使用代码的话,建议保留NSMenu相关的视图可视化部分.能省很多的功夫,少写很多不必要的代码.

NO.3 The Code

https://github.com/KarlZeo/macOSNoSBXib

NO.4 Thanks for

剑指人心大佬的入门书籍以及Demo.