Objective-C 入門指南 - 認識 Cocoa

Mac 上有五個的應用程式介面 (application programming interface) ,分別是 Cocoa 、 Carbon 、 POSIX 、 X11 與 Java




其中, Cocoa 為 Apple 公司提供開發 Mac OS X 應用軟體的物件導向 (object-oriented) API , Carbon 則是程序式的 (procedural) 。 Java 使用在 Java 語言,至於 POSIX 與 X11 為 UNIX 的 API ,許多自由軟體 (free software) 如 GIMP 、 Inkscape 等都使用 X11 。


iOS 與 Mac OS X 都是基於 Darwin 的作業系統,兩者都使用 Objective-C 為主要開發應用程式的程式語言,然而開發 iOS 需要另外下載 SDK 才可利用 UIKit ,目前本系列教學文章並不打算延伸到 iOS 的範圍。關於 iOS 的開發,可先參考官方的指南
iOS App Programming Guide
iOS Technology Overview


Mac OS X 的 Cocoa 分成兩大部份,分別是
  • Foundation
  • AppKit


Foundation 提供基本的物件 (object) ,例如所有物件之母 NSObject , Cocoa 中的物件都是繼承 (inherit) 自 NSObject , NSObject 定義了物件基本的操作。其他有
  • 數值物件 (value objects)
  • 集合物件 (collections)
  • 作業系統相關 (operating-system services)
  • 通知相關 (notifications)
  • 儲存及序列化相關 (archiving and serialization)
  • Objective-C 語言相關 (Objective-C language services)
  • XML 處理 (XML processing)
  • 運算式相關 (predicates and expressions)


例如我們用過的 NSString 就是數值物件, NSArray 與 NSMutableArray 都屬於集合物件,這些都定義在 Foundation 裡頭,因此在 Encrypt.h 的開始需要先 #import 進來
#import <Foundation/Foundation.h>


有關各類型物件的介紹,請參考官方文件
What Is Cocoa?


AppKit 則提供圖形使用者介面 (graphical user interface) 大部分的類別 (class) ,亦即 MVC 模式中 V 與 C 的部份。我們將利用 Xcode 中的 Interface Builder 直接以視覺化的方式,搭配滑鼠拉出 GUI 程式的外觀,並做各個 GUI 元件相互的連結,然後設計我們 GUI 程式專屬的 C 類別,藉以控制每個元件的動作。


稍後再來介紹如何使用 Interface Builder ,我們先來看看GUI 的基本概念吧!


中英文術語對照
應用程式介面application programming interface
物件導向object-oriented
程序式的procedural
自由軟體free software
物件object
繼承inherit
數值物件value objects
集合物件collections
作業系統相關operating-system services
通知相關notifications
儲存及序列化相關archiving and serialization
Objective-C 語言相關Objective-C language services
XML 處理XML processing
運算式相關predicates and expressions
圖形使用者介面graphical user interface
類別class


您可以繼續參考
軟體開發


相關目錄
Objective-C 入門指南
Objective-C 教材
首頁



參考資料
Learning Objective-C: A Primer
The Objective-C Programming Language
Cocoa Fundamentals Guide
Coding Guidelines for Cocoa
Advanced Memory Management Programming Guide
Archives and Serializations Programming Guide

沒有留言: