2 回答

TA貢獻1884條經驗 獲得超4個贊
控制反轉(IoC): 不是你從main()開始寫代碼然后調用lib, 而是framework調用你寫的代碼. 作為進程入口的main()仍然存在, 但是是在框架里定義的, 不用你來寫.
委托, 就是"把任務轉交給別的class, 由別的class承擔". 一個framework不能把所有行為寫死, 總有些行為要由app開發者來定義. 你定義一個實現了特定protocol的class然后傳進去, framework就會在需要的時候("app啟動了" "收到Notification了")調用你的AppDelegate來處理.

TA貢獻1860條經驗 獲得超8個贊
說起來有點長。
先說Delegate,這是一個OO中的概念,調用一個對象的成員函數在OO中的術語是給這個對象發送消息,對象接收到一個消息時可以選擇自己處理掉,或者將這個消息轉發給另外一個對象,轉發到的那個對象就被稱之為delegate。
Cocoa程序在啟動的時候,runtime會給每個app創建一個NSApplication對象實例,NSApplication對象會接收到Cocoa框架發送來的一些消息,比如告訴它程序已經啟動或者用戶想要退出等,但NSApplication對象并不親自處理這個消息,因為每個程序擁有的NSApplication對象都是一樣的,但每個程序對于這些消息的處理方式卻不一樣,所以NSApplication對象讓你指定一個Delegate對象來處理這些消息,以得到你想要的結果。
AppDelegate.swift中定義了一個class,這個class的實例對象就是這個程序中NSApplication的delegate。這個實例對象的創建是由Cocoa框架做的。
當然你可以在一個程序里建立不止一個NSApplicationDelegate的子類,也可以創建不止一個NSApplicationDelegate對象,但你的App里定義了一個xib文件,這個xib文件中指定了Cocoa到底應該創建哪個類的實例作為全局NSApplication對象的delegate。
- 2 回答
- 0 關注
- 1274 瀏覽
添加回答
舉報