前言(匯報近期狀況)
近段時間由于公司的
開發業務整合
,我領到了一個兼職維護
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.
尾聲(碎碎念)
意外的鼓勵:
在基礎課程
發布后,收到有的同學因為學習視頻課程內容
后并因此獲得了工作的實習機會
,這確是
出乎我原本的意料
,也特別高興
能幫助到同學們,希望努力的人
都可以過得美好!