誰かがこのメソッド宣言の構文を説明してくれますか?この関数では、UIPickerView(iPhoneのスロットマシンUI)の行数が返されます。私の理解では、このメソッドは「pickerView
」と呼ばれ、NSIntegerを返します。
'pickerView
'と呼ばれるUIPickerviewへのポインターを渡します...最初に、なぜメソッドはパラメーターと同じ名前で呼び出されるのですか?
次に、コンポーネントと呼ばれるNSIntegerパラメーターがあり、行をカウントするコンポーネントを示します。メソッドの本体にあるものを決定するロジック。
'numberOfRowsInComponent
とは何ですか?返される値を説明しているように見えますが、パラメータの中央にあります。
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if (component == kStateComponent)
return [self.states count];
return[self.zips count];
}
Objective-Cのメソッドは、自己文書化するように設計されており、Smalltalkの豊富な伝統から借用しています。
-(NSInteger) pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component
について、ここで説明します。
- (NSInteger)
この最初の部分は、これがNSIntegerオブジェクトを返すObjective C instanceメソッドであることを示しています。 -
(ダッシュ)は、これがインスタンスメソッドであることを示し、+
は、これがクラスメソッドであることを示します。括弧内の最初の値は、メソッドの戻り値の型です。
pickerView:
この部分はメッセージ名の一部です。 完全なメッセージ名は、この場合はpickerView:numberOfRowsInComponent:
です。 Objective-Cランタイムは、このメソッド情報を取得し、指定された受信者に送信します。純粋なCでは、これは次のようになりますNSInteger pickerView(UIPickerView* pickerView, NSInteger component)
。ただし、これはObjective-Cであるため、追加情報がメッセージ名にパックされます。
(UIPickerView*)pickerView
この部分はinputの一部です。ここでの入力はUIPickerView*
タイプであり、ローカル変数名はpickerViewです。
numberOfRowsInComponent:
この部分は、メッセージ名の2番目の部分です。ここでわかるように、メッセージ名は分割されて、受信者に渡す情報を示します。したがって、変数fooとbarを使用してオブジェクトmyObjectにメッセージを送信する場合、次のように入力します。[myObject pickerView:foo numberOfRowsInComponent:bar];
C++スタイルとは対照的に:myObject.pickerView(foo, bar);
。
(NSInteger)component
これは、入力の最後の部分です。ここでの入力はNSInteger
型であり、コンポーネントのローカル変数名を持ちます。
Objective-Cでは、メソッドの名前は、引数および型ではない宣言のすべての部分で構成されます。したがって、このメソッドの名前は次のようになります。
pickerView:numberOfRowsInComponent:
このメソッドは、次のようなCスタイルの関数と同等です。
編集: ( Jarret Hardie のおかげで):
NSInteger pickerViewNumberOfRowsInComponent(UIPickerView * pickerView, NSInteger component)
前の回答に加えて、Objective-Cメソッド(または必要に応じてメッセージ)にexternalおよびinternalパラメーター名があることを伝えたいと思います。
したがって、この場合:
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
numberOfRowsInComponent
はexternalの名前で、このメソッドを外部から呼び出すときに使用する名前です。
component
は、パラメータの内部の名前です。メソッドの内部からパラメータを参照するために使用する名前です。
それが少しクリアされることを願っています。
Objective-Cのメソッドシグネチャは、文章に似ているように思えます。各パラメーターは、メソッド名の一部に値します。たとえば、Cでは、人に関する情報を設定するメソッド(setPersonData)を使用できます。
void setPersonData( char* name, int age, float height ) {
そしてObjective-Cでは、メソッドはより記述的です(setPersonName:andAge:andHeight:)
- (void) setPersonName: (char *)name andAge:(int)age andHeight:(float)height {