本站電子書

您可以在這些電子書店找到本站電子書: Google Play 圖書iBooks StoreHyReadReadmooPubu
===>>>本站推出學習遊戲意見調查<<<===《如何自學程式設計》入選 Google Play 台灣地區2016年度最佳書籍

Objective-C 入門指南 - 認識 Objective-C 語言

使用 Objective-C 語言寫程式,最簡單的方式就是開啟文字編輯器 (text editor) ,然後將原始程式碼逐字元一個一個打進文字編輯器中,然後依純文字檔案的編碼儲存檔案, Objective-C 程式的原始碼檔案採用 .m 的副檔名。




也可以利用具有語法高亮度顯示的文字編輯器,或是整合開發環境 (Integrated Development Environment, IDE) ,如下圖為 Mac 系統的 Xcode



使用本站的語法高亮度顯示,此範例程式 demo.m 如下
// 引入 Foundation.h
#import <Foundation/Foundation.h>

// 定義 main() 函數
int main(int argc, char *argv[]) { 
    // 建立自動釋放池物件, alloc 為配置記憶體區域, init 為初始化物件
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
    // 建立三個 NSString 字串物件
    NSString *s1 = @"\n\n這是 Objective-C 的第一個程式...\n";
    NSString *s2 = @"使用 Foundation.h 中的 NSLog() 來輸出...\n";
    NSString *s3 = @"程式執行結束...\n\n";

    // 傳遞 autorelease 訊息給 NSString 字串物件
    [s1 autorelease];
    [s2 autorelease];
    [s3 autorelease];
    
    // 傳遞 stringByAppendingString 訊息給 s1 ,並以 s2 當參數
    // 這是將 s2 接到 s1 的後頭,因此 s1 與 s2 會合併為一個字串
    s1 = [s1 stringByAppendingString: s2];
    // 以下為將 s1 與 s3 合併為一個字串
    s1 = [s1 stringByAppendingString: s3];
    // 呼叫 NSLog() 函數,印出 s1 的內容
    NSLog(s1);

    // 傳遞 drain 訊息給自動釋放池物件
    [pool drain];

    // 程式結束,回傳整數 0 給作業系統
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:demo.m
    功能:示範 Objective-C 程式 
    作者:張凱慶
    時間:西元 2012 年 7 月 */


我們先看到有特殊顏色標記的幾個字
int char return


intcharreturn 被稱為關鍵字 (keyword) ,所謂的關鍵字是語法功能的保留字 (reserved word) ,具有既定特殊的用法,例如 intchar 為 Objective-C 的基本資料型態 (basic data type) , return 為函數 (function) 回傳數值之用。 Objective-C 承接 C 語言所有的關鍵字,我們接下來會逐一介紹各個關鍵字的用法。


其他特殊顏色標記的幾個字
NSAutoreleasePool *pool
NSString *s1


NSAutoreleasePool 與 NSString 是屬於 Foundation.h 裡定義的類別,我們在這裡用來建立自動釋放池 (autorelease pool) 物件 (object) 與字串物件。 Foundation 為 Cocoa 中基礎的應用框架,絕大多數情況都需要運用裡頭的東東,因此要先用前置處理器 (preprocessor) #import 進程式檔案中。


至於中括號圍起來的幾個地方
[[NSAutoreleasePool alloc] init]
[s1 autorelease];
[s2 autorelease];
[s3 autorelease];
[s1 stringByAppendingString: s2];
[s1 stringByAppendingString: s3];
[pool drain];


這是傳遞訊息 (message passing) 給物件,前面如 s1s2 稱之為識別字 (identifier) ,所謂的識別字是我們寫程式自行定義的名稱,空一格後的稱之為訊息 (message) 。多數衍生自 C++ 的物件導向程式語言泰半稱之為「呼叫方法」,而 Objective-C 源自 Smalltalk ,也承接 Smalltalk 傳遞訊息的風格特色。


另外,雙引號外加 @ 圍起來的內容則為另一種顏色
@"\n\n這是 Objective-C 的第一個程式...\n";
@"使用 Foundation.h 中的 NSLog() 來輸出...\n";
@"程式執行結束...\n\n";


這是 NSString 字串物件,所謂字串就是文字資料,而 NSString 有別於 C 語言的字串 (string) 常數, NSString 可以物件的模式進行操作。


註解 (comment) 在語法高亮度系統也有特殊的顏色,連續兩個斜線為單行的注釋,斜線、星號開始到另一組星號、斜線結束的範圍則為多行的註解
// 引入 Foundation.h
// 定義 main() 函數
// 建立自動釋放池物件, alloc 為配置記憶體區域, init 為初始化物件

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:demo.m
    功能:示範 Objective-C 程式 
    作者:張凱慶
    時間:西元 2012 年 7 月 */


所謂的註釋就是在程式中輔助說明的文字,凡是註釋文字,也就單行連續兩個斜線之後的文字,或是多行斜線、星號範圍間的文字,這些文字都不屬於會被程式執行的部份,因此可用自然語言替程式說明,無須恪守 Objective-C 的語法規則。


這個範例很簡單,只有在 main() 中呼叫 NSLog() 函數印出字串訊息。我們先來利用 Xcode 編譯與測試吧!


中英文術語對照
文字編輯器text editor
整合開發環境Integrated Development Environment, IDE
保留字reserved word
基本資料型態basic data type
函數function
自動釋放池autorelease pool
物件object
前置處理器preprocessor
傳遞訊息message passing
識別字identifier
訊息message
字串string
註解comment


您可以繼續參考
基礎篇


相關目錄
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

沒有留言: