跳轉至內容

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

來自華夏公益教科書

關於平臺

[編輯 | 編輯原始碼]

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

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++

Programming: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 上執行,而無需完全重寫他們的軟體,但 Carbon 和 Classic 一樣,不再受蘋果支援。

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 Editor,按下錄製按鈕,使用其他應用程式執行一些操作,並觀察指令碼的自我編寫。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 曾經被蘋果視為開發 Mac OS 的“一等語言”,但在近年來,蘋果對 Java 的支援減少了。現在,在 Mac OS X 10.7 “Lion” 和 10.8 “Mountain Lion” 中,Java 甚至沒有預裝在 Mac OS X 中。Java 仍然可用,但使用者必須從 Oracle 的網站下載 Java 並自行安裝。蘋果的 Mac App Store 甚至不允許 Java 應用程式在其商店銷售,稱 Java “已過時”。

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

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

蘋果對 Python 的支援程度一般。實際上,Python 與 Mac OS X 一起釋出,是系統資料夾的一部分。一些第三方庫允許開發者使用 Python 和 Cocoa 共同開發應用程式,但這些庫維護得並不好。在 Mac 上,Python 最適合開發命令列工具或跨平臺指令碼,這些指令碼不太像 Mac 的風格。

與 Python 類似。

大多數 Mac 使用者使用 Safari 作為他們的網頁瀏覽器。Safari 遵循 w3c.org 制定的標準。您可以透過遵循 w3c.org 的標準來開發相容 Safari 的網站。請記住驗證您的 HMTL、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 開發網站,請記住在其他平臺和其他網頁瀏覽器上測試您的網頁。

Mac OS X 特定語言

[編輯 | 編輯原始碼]

Objective-C 實際上是 Mac OS X 開發的“原生”語言。

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

Mac OS X 框架

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