前言(汇报近期状况)
近段时间由于公司的
开发业务整合
,我领到了一个兼职维护
Android项目的机会,于是花了些时间把安卓基础
的知识过了一遍,顺带还熟悉了一下Java语言
,收获非浅,填补了技术栈的一个空白, 同时出于业务对跨平台
的明显需求, 额外利用时间研究了ReactNative
,算是迈出了面向全栈
的一小步
.这其中的体验
就是:进步使人愉悦, 由于这些工作上
的原因,原本已经准备的好
一部分macOS 开发的进阶项目也因此耽搁了进度
, 后面会抓紧时间
再补上来,希望有兴趣的朋友们
不要着急,我会定期更新进度
,希望可以做的更好.关于macOS 开发基础教程视频课程已经发布有
差不多两个月
的时间了,收到部分同学的反馈
和提问
,十分感谢.后期的进阶课程
计划对已经收看基础课程
的同学进行免费授权
,目前还不清楚网易平台
是否支持这个功能
,如果有朋友或同学
了解,烦请简信
我,先提前致谢了.
正文(macOS 开发基础小知识)
1. macOS App 的启动过程:
通过熟悉一个App的启动过程
,有利于我们理解
开发时代码的执行过程
,以及帮助我们修复一些系统Bug
都是非常有意义的.一个macOS的App
启动与iOS App
启动相似,大体上
可以将整个过程
分为两部分:
-
- 准备过程:
- 当我们通过
点击图标
启动一个App应用程序
时,系统做的第一件事情
就是打开info.plist
文件, 从中获知编译后的二进制文件
位于什么地方,并启动它
我们的编写的代码
此后便处于App的控制
机制下.
info.plist
文件提供了对应用程序
的基本描述
:- 应用的图标
- 应用的类型(仅macOS)
- 应用程序的可执行二进制文件名称
- 启动应用时加载的界面文件
- 应用程序支持打开的文档类型
info.plist 文件非常重要,如果从应用程序中删除这个文件
,会导致App无法启动
.
- 2.运行过程:
系统运行
的第一件事就是打开主storyboard
(Xcode7以前的版本是打开nib文件),并反序列化
其中的内容,也就是说会对Storyboard
文件(Xcode7前的工程是nib文件)中的控件,窗口以及其他对象
进行解包,并将它们链接到一起
.
链接对象的时候系统
会调用ld
和dyld
来进行静态
和动态
的加载需求库.
同时,系统会给应用创建一个AppDelegate
对象和事件循环(runloop)
,并在完成资源和库加载后,会给AppDelegate
发送一个applicationDidFinishLaunching
消息.
从此刻起,应用就在我们的代码控制之下了~
2. NSView的layer说明:
在macOS中,NSView
由于历史原因,并不像iOS中的UIView
一样天然的就带有一个layer图层
,这在NSView
的使用时,会造成有时通过layer.backgroundColor
来设置背景色
无效.(在课程的视频里有相关的讲解
).
如果希望NSView可以正常使用layer图层,仅仅需要设置wantsLayer
属性为YES(Swift中是true)
即可.
通常情况下,从storyboard(或Xib)
中拖拽的控件,wantsLayer
是默认为YES的.
如果通过代码创建
的控件,那么在被addSubview
方法添加到父控件
之前,wantsLayer
是默认为NO.
尾声(碎碎念)
意外的鼓励:
在基础课程
发布后,收到有的同学因为学习视频课程内容
后并因此获得了工作的实习机会
,这确是
出乎我原本的意料
,也特别高兴
能帮助到同学们,希望努力的人
都可以过得美好!