
- Objective-C 基礎
- Objective-C - 首頁
- Objective-C - 概述
- Objective-C - 環境搭建
- Objective-C - 程式結構
- Objective-C - 基本語法
- Objective-C - 資料型別
- Objective-C - 變數
- Objective-C - 常量
- Objective-C - 運算子
- Objective-C - 迴圈
- Objective-C - 決策
- Objective-C - 函式
- Objective-C - 塊
- Objective-C - 數字
- Objective-C - 陣列
- Objective-C - 指標
- Objective-C - 字串
- Objective-C - 結構體
- Objective-C - 預處理器
- Objective-C - Typedef
- Objective-C - 型別轉換
- Objective-C - 日誌處理
- Objective-C - 錯誤處理
- 命令列引數
- 高階 Objective-C
- Objective-C - 類與物件
- Objective-C - 繼承
- Objective-C - 多型
- Objective-C - 資料封裝
- Objective-C - 分類
- Objective-C - 模擬
- Objective-C - 擴充套件
- Objective-C - 協議
- Objective-C - 動態繫結
- Objective-C - 組合物件
- Obj-C - Foundation 框架
- Objective-C - 快速列舉
- Obj-C - 記憶體管理
- Objective-C 有用資源
- Objective-C - 快速指南
- Objective-C - 有用資源
- Objective-C - 討論
Objective-C 函式
函式是由一些語句組成的,這些語句一起執行一項任務。每個 Objective-C 程式都有一個 C 函式,即main(),並且所有最簡單的程式都可以定義附加函式。
您可以將程式碼分成單獨的函式。如何將程式碼劃分到不同的函式中取決於您,但邏輯上,劃分通常是讓每個函式執行特定任務。
函式宣告告訴編譯器函式的名稱、返回型別和引數。函式定義提供函式的實際主體。
基本上,在 Objective-C 中,我們將函式稱為方法。
Objective-C Foundation 框架提供了許多內建方法,您的程式可以呼叫這些方法。例如,方法appendString()用於將字串附加到另一個字串。
方法也稱為函式、子程式或過程等。
定義方法
Objective-C 程式語言中方法定義的一般形式如下:
- (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgumentn:( argumentTypen )argumentNamen { body of the function }
Objective-C 程式語言中的方法定義由方法頭和方法體組成。以下是方法的所有部分:
返回型別 - 方法可以返回值。return_type 是函式返回的值的資料型別。某些方法執行所需的操作而不返回值。在這種情況下,return_type 是關鍵字void。
方法名稱 - 這是方法的實際名稱。方法名稱和引數列表一起構成方法簽名。
引數 - 引數就像一個佔位符。當呼叫函式時,您會向引數傳遞一個值。此值稱為實際引數或引數。引數列表指的是方法的引數的型別、順序和數量。引數是可選的;也就是說,方法可能不包含任何引數。
連線引數 - 連線引數是為了使其更易於閱讀並在呼叫時使其更清晰。
方法體 - 方法體包含定義方法執行內容的語句集合。
示例
以下是名為max()的方法的原始碼。此方法採用兩個引數 num1 和 num2,並返回兩者之間的最大值:
/* function returning the max between two numbers */ - (int) max:(int) num1 secondNumber:(int) num2 { /* local variable declaration */ int result; if (num1 > num2) { result = num1; } else { result = num2; } return result; }
方法宣告
方法宣告告訴編譯器函式名稱以及如何呼叫該方法。函式的實際主體可以單獨定義。
方法宣告包含以下部分:
- (return_type) function_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgumentn:( argumentTypen )argumentNamen;
對於上面定義的函式 max(),方法宣告如下:
-(int) max:(int)num1 andNum2:(int)num2;
當您在一個原始檔中定義一個方法並在另一個檔案中呼叫該方法時,需要方法宣告。在這種情況下,您應該在呼叫函式的檔案頂部宣告該函式。
呼叫方法
建立 Objective-C 方法時,您會給出函式必須執行的操作的定義。要使用方法,您必須呼叫該函式來執行定義的任務。
當程式呼叫函式時,程式控制權將轉移到被呼叫的方法。被呼叫的方法執行定義的任務,當執行其 return 語句或到達其函式結束的閉合大括號時,它會將程式控制權返回到主程式。
要呼叫方法,您只需傳遞所需的引數以及方法名稱,如果方法返回值,則可以儲存返回值。例如:
#import <Foundation/Foundation.h> @interface SampleClass:NSObject /* method declaration */ - (int)max:(int)num1 andNum2:(int)num2; @end @implementation SampleClass /* method returning the max between two numbers */ - (int)max:(int)num1 andNum2:(int)num2 { /* local variable declaration */ int result; if (num1 > num2) { result = num1; } else { result = num2; } return result; } @end int main () { /* local variable definition */ int a = 100; int b = 200; int ret; SampleClass *sampleClass = [[SampleClass alloc]init]; /* calling a method to get max value */ ret = [sampleClass max:a andNum2:b]; NSLog(@"Max value is : %d\n", ret ); return 0; }
我把 max() 函式和 main() 函式放在一起,並編譯了原始碼。執行最終的可執行檔案時,它將產生以下結果:
2013-09-07 22:28:45.912 demo[26080] Max value is : 200
函式引數
如果函式要使用引數,則必須宣告接受引數值的變數。這些變數稱為函式的形式引數。
形式引數在函式內部的行為與其他區域性變數相同,並在進入函式時建立,並在退出函式時銷燬。
呼叫函式時,引數可以透過兩種方式傳遞給函式:
序號 | 呼叫型別和描述 |
---|---|
1 | 按值呼叫
此方法將引數的實際值複製到函式的形式引數中。在這種情況下,對函式內部引數所做的更改不會影響引數。 |
2 | 按引用呼叫
此方法將引數的地址複製到形式引數中。在函式內部,該地址用於訪問呼叫中使用的實際引數。這意味著對引數所做的更改會影響引數。 |
預設情況下,Objective-C 使用按值呼叫傳遞引數。一般來說,這意味著函式中的程式碼無法更改用於呼叫函式的引數,並且上述示例在呼叫 max() 函式時使用了相同的方法。