macOS 开发 - 小基础拾遗

mac开发-碎碎念

前言(汇报近期状况)

  1. 近段时间由于公司的开发业务整合,我领到了一个兼职维护Android项目的机会,于是花了些时间把安卓基础的知识过了一遍,顺带还熟悉了一下Java语言,收获非浅,填补了技术栈的一个空白, 同时出于业务对跨平台的明显需求, 额外利用时间研究了ReactNative,算是迈出了面向全栈一小步.这其中的体验就是:进步使人愉悦, 由于这些工作上的原因,原本已经准备的好一部分macOS 开发的进阶项目也因此耽搁了进度, 后面会抓紧时间再补上来,希望有兴趣的朋友们不要着急,我会定期更新进度,希望可以做的更好.
  2. 关于macOS 开发基础教程视频课程已经发布有差不多两个月的时间了,收到部分同学的反馈提问,十分感谢.后期的进阶课程计划对已经收看基础课程的同学进行免费授权,目前还不清楚网易平台是否支持这个功能,如果有朋友或同学了解,烦请简信我,先提前致谢了.

正文(macOS 开发基础小知识)

1. macOS App 的启动过程:

通过熟悉一个App的启动过程,有利于我们理解开发时代码的执行过程,以及帮助我们修复一些系统Bug都是非常有意义的.一个macOS的App启动与iOS App启动相似,大体上可以将整个过程分为两部分:

    1. 准备过程:
    • 当我们通过点击图标启动一个App应用程序时,系统做的第一件事情就是打开info.plist文件, 从中获知编译后的二进制文件位于什么地方,并启动它我们的编写的代码此后便处于App的控制机制下. info.plist文件提供了对应用程序基本描述:
      • 应用的图标
      • 应用的类型(仅macOS)
      • 应用程序的可执行二进制文件名称
      • 启动应用时加载的界面文件
      • 应用程序支持打开的文档类型

info.plist 文件非常重要,如果从应用程序中删除这个文件,会导致App无法启动.

  • 2.运行过程: 系统运行的第一件事就是打开主storyboard(Xcode7以前的版本是打开nib文件),并反序列化其中的内容,也就是说会对Storyboard文件(Xcode7前的工程是nib文件)中的控件,窗口以及其他对象进行解包,并将它们链接到一起. 链接对象的时候系统会调用lddyld来进行静态动态的加载需求库. 同时,系统会给应用创建一个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.

尾声(碎碎念)

意外的鼓励:基础课程发布后,收到有的同学因为学习视频课程内容后并因此获得了工作的实习机会,这确是出乎我原本的意料,也特别高兴能帮助到同学们,希望努力的人都可以过得美好!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

IMVC(同构 MVC)的前端实践

导语 随着 Backbone 等老牌框架的逐渐衰退,前端 MVC 发展缓慢,有逐渐被 MVVM/Flux 所取代的趋势。 然而,纵观近几年的发展,可以发现一点,...

2336
来自专栏Jerry的SAP技术分享

Jerry的SAP UI5框架代码自学教程

SAP UI5对View元素基于jQuery的操作方式,使得其学习曲线相对Angular/React来说比较平缓,至少对于我个人而言是这样。对于已经有jQuer...

28310
来自专栏快乐八哥

Progressive Web Apps入门

PC和Mobile开发技术演进 PC方向,从客户端到富客户端,到现在广泛使用的Web。 移动方向,目前主要还是原生应用和Mobile Web,PWA相关技术是未...

24610
来自专栏Youngxj

在线听歌房源码 - MKOnlineMusicPlayer V2.21

4443
来自专栏不止是前端

实用主义:前端IDE选择从入门到高阶

42712
来自专栏web前端教室

【周总结】0827前端零基础班本周总结(08.27-08.31)

每一期的学生情况都是不同的,因为是从完全的零基础开始讲起,面向的是完全的前端零基础学生。所以第一周基本上进度都比较慢,主要是通过课后作业和课程直播时的即时反馈来...

943
来自专栏冰霜之地

WWDC2016 Session笔记 - iOS 10  推送Notification新特性

在今年6月14号苹果WWDC开发者大会上,苹果带来了新的iOS系统——iOS 10。苹果为iOS 10带来了十大项更新。苹果高级副总裁Craig Federig...

1032
来自专栏何俊林

为什么我推荐你用Ubuntu开发?

Ubuntu 能搞得像 Mac 和 Windows 一样好看的桌面环境吗,而且要简单快速,不折腾。笔者在今年将系统更新成 Ubuntu18.04 后,每每有闲工...

4294
来自专栏我和未来有约会

Radiant: 基于Ruby on Rails的内容管理系统

Radiant是一个开源的CMS[内容管理系统],建立于Ruby on Rails。Radiant是为一些小的开发团队而创建的[Publishing for S...

20310
来自专栏CDA数据分析师

教你一招 | 用Python写一个简单的微博爬虫

我是个微博重度用户,工作学习之余喜欢刷刷timeline看看有什么新鲜事发生,也因此认识了不少高质量的原创大V,有分享技术资料的,比如好东西传送门;有时不时给你...

22210

扫码关注云+社区

领取腾讯云代金券