计算机编程/MacOS 编程
macOS 是 Macintosh 计算机的主要操作系统。它最初是由苹果公司私下设计的系统,但在 Mac OS X 中,它已经基于 Unix。具体来说,是名为“Darwin”的修改版 FreeBSD 操作系统。
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 文件传输到其他文件系统时可能会丢失。
开发 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”的应用程序,可用于轻松地自动化重复性任务。它位于 /Applications/Automator.app
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 开发网站,请记住在其他平台和其他网页浏览器上测试您的网页。
Objective-C 实际上是 Mac OS X 开发的“原生”语言。
您也可以将 AppleScript 称为“原生”语言,但它并不真正用于制作商业应用程序。它被设计为供真正的资深用户用来自动化他们的任务。虽然可以使用 AppleScript 在 XCode 中构建 Cocoa 应用程序,但这更适合那些已经了解 AppleScript 并且不想学习 Objective-C 的用户。