私はObjective-cを学ぶための本を読んでいますが、このコードを理解していませんでした。
NSString* myString = [NSString string];
[ object method ]
入力したか、クラス内のメソッドが呼び出されるかはわかりますobject.method
が、どういう[ Class method ]
意味ですか?
私はObjective-cを学ぶための本を読んでいますが、このコードを理解していませんでした。
NSString* myString = [NSString string];
[ object method ]
入力したか、クラス内のメソッドが呼び出されるかはわかりますobject.method
が、どういう[ Class method ]
意味ですか?
これはクラスメソッドです。基本的には、クラスの特定のインスタンス(オブジェクト)ではなく、クラス自体で呼び出されるメソッドです。詳細については、この質問を参照してください。
最初の行は、新しい空の文字列を作成します。長さ0。@""だけです。クラスvsインスタンスで同じことを達成できるのNSString *myString = @"";
は、最後の質問です。クラスは「このメソッドが私に与えるものを作りたい」です。を使用している場合は[NSString string]
、基本的にを実行してい[[NSString alloc] init]
ます。したがって、インスタンスを使用すると、Classインスタンス(別名myString)用のメソッドと変数にアクセスできます[myString length]
。あなたはできません[NSString length]
。
クラスメソッドは、インスタンスを取得する(またはクラスタイプを取得する)ためのインターフェイスであり、インスタンスメソッドは、実際に使用しているそのクラスのメモリ内インスタンス用です。
複雑な答えでごめんなさい。
ご存知かもしれませんが、クラスのインスタンスに送信できるのはメソッドだけではありません。メソッドのクラスオブジェクトに送信できるメソッドもあります。この特定のメソッドは空の文字列を返し、それを「myString」に渡します。クラスオブジェクトの詳細については、Appleドキュメント「TheObjective-Cプログラミング言語」を参照してください。