MacOS开发01-HelloWorld

2,068 阅读5分钟

前言

MacOS平台的应用开发使用的语言是:Swift,最初使用的是Objective-C简称OC,由于语法太过诡异难懂,不易于初学者学习目前大部分使用的是Swift,但是由于OC年代久远,很多问题的回答还是使用的OC,所以了解OC语法也有帮助。

为Mac开发应用使用的UI库叫做Cocoa,Cocoa始于1989年,当年乔布斯被迫离开Apple,创立了NeXT公司,在1989年9月上市的NeXTSTEP 1.0发布了Cocoa的最初基础版本,当时还不叫Cocoa。

后面乔布斯发布了iPhone,将OS X系统带入到iPhone中,为iPhone开发应用程序使用的UI库叫:Cocoa Touch,添加了Touch顾名思义--iPhone开创了智能手机的先河,是最先进的触屏手机。 后面苹果又推出了Swift UI,也是目前主推的响应式UI框架。

使用StoryBoard来创建页面和窗口内的元素,以及窗口之间的关系和跳转等。在IPhone上也可以使用storyboard,苹果的很多东西是互通的。

Xcode 是苹果官方的开发工具,是开发所有Apple系平台软件最主流的IDE,没有之一。由于苹果的封闭性,其他的IDE不能说不可以用,但是绝对算不上主流。 Xcode 是免费的,你可以到App Store搜索下载,由于是集成开发环境,支持iPhone、Mac、Apple Watch、Apple TV等众平台的开发,所以它体积很大(大概12G),下载之后的安装也较为缓慢,如果你是M1系列芯片,那安装时间会快些。

创建项目

打开Xcode,选择Create a New Xcode Project, 选择MacOS一栏,选择App, 选择Next

image.png

输入你的软件名称,选择你的Team 账号,Mac可以不选择,也可以选择你自己的账号,可以去苹果开发者官网注册。输入你的组织标识,如果要发布到Apple Store需要保证全球唯一,一般使用网站反拼写加你的软件名称。 选择interface: StoryBoard,语言为:Swift,不勾选 use Core data 和Include Tests,点击Next,选择一个工程保存的目录。

image.png

Well. 你刚刚创建了你的首个Mac APP项目,简单介绍下Xcode 的几个功能栏目

image.png

初始文件介绍

01.HelloWorld

最顶部的01.HelloWorld是工程文件,点击后打开这个项目的所有配置类的信息,包括你的项目名称、版本号、最低兼容的部署系统版本、使用的Swift版本、使用哪个开发者账号、添加哪些权限到项目内等等

下面的01.Hello是代码目录,我们的代码和资源都放在这个目录内。后面使用Cocopods 来管理依赖包时,会有同级目录。

AppDelegate

是整个应用的代理类,Apple系的软件开发非常广泛使用代理模式,很多组件的使用都大量使用Delegate,为的是让两个组件之间更低耦合的沟通。所以,这个类实现了NSApplicationDelegate,是应用程序的代理类,关于整个应用的一些事件或配置都会调用到这个类的某个属性或函数。如下面覆盖了三个回调函数。

@main

class AppDelegate: NSObject, NSApplicationDelegate {

    // 应用加载完成后调用
    func applicationDidFinishLaunching(_ aNotification: Notification) {

        // Insert code here to initialize your application

    }
    // 应用即将结束时调用
    func applicationWillTerminate(_ aNotification: Notification) {
        // Insert code here to tear down your application
    }
    
    // 是否支持从安全状态恢复
    func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
        return true
    }
}

ViewController

ViewController 是软件中数据与视图之间重要的桥梁,是MacOS开发的基础,非常重要的内容之一。

一个程序是由几个window组成,每个window是由多个view 视图组成,每个视图是页面上的每个细小的元素,可以是一个按钮button,一个展示图片的imageView,一个展示网页的WebView等。 而ViewController就是管理这些视图的,管理button点击后的事件处理,imageView中图片的数据,WebView的一些配置信息和要加载的网页信息等等.

Cocoa内置了很多视图,也称之为原生的UI组件,例如NSButton, TableView,WebKit View, Scroll View等,有些是单纯的NSView的子类,有些也会有对应的ViewController。

同样在ViewController中会有这个视图的一些回调来供开发者调整这个页面的一些特殊配置和接受一些事件的处理。

import Cocoa

class ViewController: NSViewController {

    // 页面加载完成后调用
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }
}


Assets.xcassets

这个是存放图片资源的文件,是一个特殊的文件,里面会放置程序的icon,会为你贴心的放几个“篮子”让你放置不同大小分辨率,适用于不同位置展示的icon。如果是IPhone的话会更多,因为要适配的尺寸很多。

Main.storyboard

是设计你窗口和视图的文件,里面可以拖动系统的一些UI组件,修改每个组件的属性。调整放置的位置和元素之间的约束,可以新增window,设计window之间的关系跳转逻辑。

可以将你的组件 以outlet的方式关联到你的代码里,也就是ViewController里,以让你代码里可以动态调整这个组件的属性、位置、样式等信息。

也可以将UI组件触发的一些事件关联到你的代码里,以让你的代码能够响应用户的动作。例如最常见的点击事件,你点击一个按钮,触发你ViewController里关联的代码。

启动你的第一个程序

点击偏左上方的 启动图标按钮,运行你的程序,之后就可以看到一个窗口啦!

image.png

最后

好了,这就是今天的所有内容,希望你的MacOS开发旅程开心有趣。