跳轉到內容

計算機程式設計/MacOS 程式設計

來自華夏公益教科書,為開放的世界提供開放的書籍

關於平臺

[編輯 | 編輯原始碼]

macOS 是 Macintosh 計算機的主要作業系統。它最初是由蘋果公司私下設計的系統,但隨著 Mac OS X 的出現,它已經基於 Unix。具體來說,是經過修改的 FreeBSD 作業系統,稱為“Darwin”。

有許多不同型別的軟體可以為 Mac OS X 開發。人們通常想到應用程式,但我們將簡要介紹其他一些型別。

Mac OS X 軟體型別

[編輯 | 編輯原始碼]

應用程式

[編輯 | 編輯原始碼]

應用程式是人們通常想到的 Mac OS X 軟體。Cocoa 應用程式包括:Finder、Mail、通訊錄、Safari、Microsoft Word 和 Microsoft Excel。任何人都可以使用蘋果公司的免費開發工具開發應用程式,這些工具包括 XCode。Mac OS X 應用程式使用 Objective-C 開發,儘管可以使用其他程式語言。

macOS 平臺上最流行的語言是 Objective-C,它可以被認為是 Mac OS X 的“原生語言”,因為 Mac OS X 庫或“框架”都具有 Objective-C 介面。Objective-C 包含了普通 C 可以做的一切,並增加了面向物件程式設計。請參閱:Objective-C.

C++ 可以用於 Mac 開發,但通常它與 Objective-C 一起使用,而不是替代 Objective-C。同時使用 Objective-C 和 C++ 被稱為“Objective-C++”,在為 Mac OS X 開發軟體時被認為是可選的:C++

請參閱 程式設計:Objective-C 以瞭解 Objective-C 基礎知識的課程 [1] 也可能會有幫助。

一些初步想法

Objective-C 是 Mac OS 程式設計中最常用的語言。Objective-C 進入了 Mac OS X,其祖先來自 NeXT。 Cocoa。在學習 Mac 程式設計之前,您必須瞭解 C 的基礎知識,因為它是 Objective-C 的基礎。

曾經有三個獨立的 API 用於開發帶有 GUI 的 Mac 應用程式

1. Classic(Mac OS 9 及更低版本)。Classic API 的開發不再進行。當 Mac OS X 首次推出時,使用者和開發人員在為 Mac Classic OS 編寫的軟體方面投入了巨資,而 Mac OS X 曾經有一個模擬模式,以便使用者可以執行他們舊的軟體。蘋果已經停止支援 Mac OS X 中的 Classic API 和 Classic 模擬。

2. Carbon(Mac OS 8.5 到 Mac OS X 10.6 Snow Leopard 包括)。Carbon 是一個 API,供開發人員更新使用 Classic API 的應用程式,以便在沒有 Classic 模擬器的情況下執行。Carbon 是蘋果公司提供給開發人員的一種很好的方法,讓他們升級軟體以便在 Mac OS X 上執行,而無需完全重寫軟體,但與 Classic 一樣,Carbon 也不再受蘋果公司的支援。

3. Cocoa(所有版本的 Mac OS X)。Cocoa 是最原生的 API,可用於為 Mac OS X 開發真正“Mac 風格”的應用程式。通常,Objective-C 將與 Cocoa 一起使用,儘管還有其他選擇,例如 Cocoa-AppleScript 和 Cocoa-Python,但 Cocoa-Objective-C 確實是開發 Cocoa 應用程式的“主流”方式。

資源分叉 Mac OS X 中的檔案有一個 Mac OS 獨有的特性,即磁碟上的每個檔案都可以有兩個“分叉”。此特性曾經用於 Classic 和 Carbon 應用程式,將程式碼與資源(如選單、視窗等)分開,Mac OS X 檔案系統仍然支援兩個分叉,但您應該只使用“資料分叉”。資源分叉是非標準的,在將 Mac 檔案傳輸到其他檔案系統時可能會丟失。

AppleScripts

[編輯 | 編輯原始碼]

另一種為 Mac OS X 應用程式開發的“原生語言”是 AppleScript。AppleScript 是蘋果公司發明的一種用於自動化重複性任務的語言。AppleScript 應用程式位於您 Mac 上的 /Applications/Utilities/AppleScript Editor。AppleScript 可用於錄製 AppleEvents,即應用程式傳送給自己或其他應用程式的事件。為什麼不試一試呢?開啟 AppleScript 編輯器,按下錄製按鈕,對其他應用程式執行一些操作,然後觀察指令碼自行編寫。AppleScript 可以單獨使用,也可以與 XCode 一起使用,以開發主要使用 AppleScript 而不是 Objective-C 的 Cocoa 應用程式。此選項主要適用於不瞭解 Objective-C 的經驗豐富的 AppleScript 程式設計師。

Automator 工作流程

[編輯 | 編輯原始碼]

蘋果還提供了一個名為“Automator”的應用程式,可用於輕鬆地自動化重複性任務。它位於 /Applications/Automator.app。

Shell 指令碼

[編輯 | 編輯原始碼]

Mac OS X 具有一個名為 Terminal 的應用程式,它為 Mac OS X 提供了一個命令列介面。可以為命令列開發指令碼。Terminal.app 位於 /Applications/Utilities/Terminal.app 要建立 shell 指令碼,您需要一個文字編輯器。Mac OS X 附帶了一個名為“TextEdit.app”的文字編輯器。它位於 /Applications/TextEdit.app。但實際上,比 TextEdit 更好的程式是 TextWrangler.app,它可以從以下連結免費獲得:http://www.barebones.com/products/textwrangler/

Terminal.app 預設使用的 shell 稱為“bash”。這裡有一個關於開發 bash 指令碼的簡單教程 http://www.maclife.com/article/columns/terminal_101_automate_terminal_bash_scripts

我們不會在這本華夏公益教科書中更深入地探討 shell 指令碼,但瞭解它們是什麼很重要。現在您知道要搜尋什麼了,您可以隨時在 Google 上搜索更多資訊。

命令列工具

[編輯 | 編輯原始碼]

當您開啟 Terminal 並學習如何輸入命令時。這些命令通常是命令列工具或指令碼。在上面,我們剛剛討論了使用文字編輯器開發自己的指令碼。也可以使用 XCode 開發自己的命令列工具。這是一件高階的事情。通常,高階使用者會編寫 shell 指令碼(或其他一些東西,例如 AppleScript 或 Automator 工作流程),但瞭解命令列工具是什麼很重要。命令列工具具有文字使用者介面,而不是圖形使用者介面 (GUI)。

過去,Java 被蘋果視為開發 macOS 的“一等語言”。然而,近年來,蘋果對 Java 的支援有所減少。在 macOS X 10.7 "Lion" 和 10.8 "Mountain Lion" 中,Java 甚至不再預裝在 macOS X 中。雖然 Java 仍然可用,但使用者需要從 Oracle 網站下載並自行安裝。蘋果的 Mac App Store 甚至不允許 Java 應用程式在其商店中出售,將 Java 稱為“已棄用”。

然而,仍有一些 Mac 開發人員使用 Java,因為它具有跨平臺相容的優勢。例如,相同的原始碼可用於生成在 Mac、Windows 和 Linux 上執行的軟體。

蘋果表示,Java 將 Mac 降低到“最低公分母”。這就是他們減少對 Java 支援的原因。

蘋果對 Python 提供了一定程度的支援。事實上,Python 與 macOS X 一起釋出,並且是系統資料夾的一部分。有一些第三方庫允許開發人員使用 Python 和 Cocoa 共同開發應用程式,但這些庫維護得不是很好,Mac 上的 Python 最適合開發命令列實用程式或非 Mac 風格的跨平臺指令碼。

與 Python 類似。

大多數 Mac 使用者使用 Safari 作為他們的網頁瀏覽器。Safari 使用 w3c.org 制定的標準。您可以透過遵循 w3c.org 的標準來開發與 Safari 相容的網站。請記住驗證您的 HTML、CSS 和 JavaScript。

HTML 驗證器:http://validator.w3.org/

CSS 驗證器:http://jigsaw.w3.org/css-validator/

JavaScript Lint:http://www.javascriptlint.com/online_lint.php

如果您使用 Mac 開發網站並使用 Safari,請記住在其他平臺和使用其他網頁瀏覽器上測試您的網頁。

macOS 特定語言

[編輯 | 編輯原始碼]

Objective-C 是 macOS X 開發的“原生”語言。

您也可以將 AppleScript 稱為“原生”語言,但它實際上並未用於製作商業應用程式。它旨在供真正的資深使用者使用,以自動化他們的任務。雖然可以使用 AppleScript 在 XCode 中構建 Cocoa 應用程式,但這更適合已經瞭解 AppleScript 而不願學習 Objective-C 的使用者。

macOS X 框架

[編輯 | 編輯原始碼]
華夏公益教科書