Objective-c-functions

提供:Dev Guides
移動先:案内検索

Objective-Cの機能

関数は、一緒にタスクを実行するステートメントのグループです。 すべてのObjective-Cプログラムには、* main()*という1つのC関数があり、最も単純なプログラムはすべて、追加の関数を定義できます。

コードを別々の機能に分割できます。 コードを異なる関数に分割する方法はユーザー次第ですが、論理的には通常、各関数が特定のタスクを実行するように分割されます。

関数*宣言*は、関数の名前、戻り値の型、およびパラメーターについてコンパイラーに通知します。 関数 definition は、関数の実際の本体を提供します。

基本的にObjective-Cでは、関数をメソッドとして呼び出します。

Objective-C基盤フレームワークは、プログラムが呼び出すことができる多数の組み込みメソッドを提供します。 たとえば、文字列を別の文字列に追加するメソッド* appendString()*。

メソッドは、関数、サブルーチン、またはプロシージャなどのさまざまな名前で知られています。

メソッドの定義

Objective-Cプログラミング言語のメソッド定義の一般的な形式は次のとおりです-

- (return_type) method_name:( argumentType1 )argumentName1
joiningArgument2:( argumentType2 )argumentName2 ...
joiningArgumentn:( argumentTypen )argumentNamen {
   body of the function
}

Objective-Cプログラミング言語のメソッド定義は、_method header_と_method body_で構成されています。 ここにメソッドのすべての部分があります-

  • 戻りタイプ-メソッドは値を返す場合があります。 return_type は、関数が返す値のデータ型です。 一部のメソッドは、値を返さずに目的の操作を実行します。 この場合、return_typeはキーワード void です。
  • メソッド名-これはメソッドの実際の名前です。 メソッド名とパラメーターリストが一緒になってメソッドシグネチャを構成します。
  • 引数-引数はプレースホルダーのようなものです。 関数が呼び出されると、引数に値を渡します。 この値は、実パラメーターまたは引数と呼ばれます。 パラメータリストは、メソッドの引数のタイプ、順序、および数を参照します。 引数はオプションです。つまり、メソッドには引数が含まれない場合があります。
  • Joining Argument -ジョインの引数は、呼び出し中に読みやすく、明確にするためのものです。
  • メソッド本体-メソッド本体には、メソッドの動作を定義するステートメントのコレクションが含まれています。

以下は、* max()*というメソッドのソースコードです。 このメソッドは、num1とnum2の2つのパラメータを取り、2つの間の最大値を返します-

/*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;
}

main()関数とともにmax()関数を保持し、ソースコードをコンパイルしました。 最終的な実行可能ファイルを実行している間、それは次の結果を生成します-

2013-09-07 22:28:45.912 demo[26080] Max value is : 200

関数の引数

関数が引数を使用する場合、引数の値を受け入れる変数を宣言する必要があります。 これらの変数は、関数の*仮パラメータ*と呼ばれます。

仮パラメータは、関数内の他のローカル変数のように動作し、関数に入ると作成され、終了すると破棄されます。

関数を呼び出している間、引数を関数に渡すことができる2つの方法があります-

Sr.No. Call Type & Description
1

Call by value

このメソッドは、引数の実際の値を関数の仮パラメーターにコピーします。 この場合、関数内のパラメーターを変更しても、引数には影響しません。

2

Call by reference

このメソッドは、引数のアドレスを仮パラメーターにコピーします。 関数内では、呼び出しで使用される実際の引数にアクセスするためにアドレスが使用されます。 これは、パラメーターに加えられた変更が引数に影響することを意味します。

デフォルトでは、Objective-Cは*値による呼び出し*を使用して引数を渡します。 一般に、これは、関数内のコードが関数の呼び出しに使用される引数を変更できないことを意味します。max()関数の呼び出し中の上記の例は同じメソッドを使用しました。