以下の様にプロトタイプ宣言されたクラスがあるとします。
@interface testClass : NSObject {
}
- (void) testMethod : (int) param1 param2 : (int)p2;
@end
ここでちょっと注意点があります。
ほぼ全てのクラスは「NSObject」クラスを継承させます。
「NSObject」クラスは、全てのクラスのスーパークラスとなるものです。
「NSObject」の「NS」とは、UNIXの「Next Step」の「NS」だそうです。
Objective-CはUNIXのNext Stepから派生した開発言語です。
ちなみに、クラスのメソッド宣言はクラス宣言({}(ブレス))の外側に宣言することも注意点でしょうか。
このクラスをインスタンス生成するには、以下の様に書きます。
testClass* tc = [[ testClass alloc] init];
また、インスタンスのメソッドを呼出すには以下の様に書きます。
[tc testMethod:1 param2:2];
C、C++、C#と比べるとかなり違いますね。
メソッドを呼び出す時は、大括弧([])で囲みます。
C、C++、C#言語では「->」または「.」を使っていたのでかなり違和感がありますが、これもUNIXのNext Stepから来ているものです。
「[testClass alloc]」でインスタンス生成用のメモリ割当を行うメソッドを呼出し、続く「init」で初期化メソッドを呼出します。
「alloc」も「init」もスーパークラスである「NSObject」内で定義されています。
その結果を「testClass* tc = ・・・」でクラスのインスタンスポインタ「tc」に取得します。
後は、取得したインスタンスポインタ「tc」からtestMethodを呼出すために、「[tc testMethod:1 param2:2]」とします。
「testMethod:1 param2:2」の「:1」の部分は、1番目の引数を指定している部分で、「 param2:2」が2番目の引数を指定している部分です。
1番目の引数はメソッド名の直後に「:(コロン)」を書いて指定し、2番目の引数は「引数の説明:」に続けて指定しています。
メソッド呼出しを「[]大括弧」で囲む所とか、引数の指定方法が大分違うので最初は戸惑いそうですが、慣れると大丈夫そうかな?
0 件のコメント:
コメントを投稿