Alguém pode explicar essa sintaxe de declaração de método para mim? Nesta função, o número de linhas de um UIPickerView (UI de slot machine no iPhone) está sendo retornado. Pelo meu entendimento, o método é chamado 'pickerView
' e retorna um NSInteger.
Ele passa um ponteiro para o UIPickerview chamado ' pickerView
' ... primeiro, por que o método é chamado com o mesmo nome que o parâmetro?
Em seguida, há o parâmetro NSInteger chamado component que nos diz para qual componente estamos contando as linhas. A lógica para decidir qual está no corpo do método.
O que é ' numberOfRowsInComponent
? Parece descrever o valor que estamos retornando, mas está no meio dos parâmetros.
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if (component == kStateComponent)
return [self.states count];
return[self.zips count];
}
fonte
No Objective-C, o nome de um método é composto por todas as partes da declaração que não são argumentos e tipos. O nome desse método seria, portanto:
O método seria equivalente a uma função no estilo C com a seguinte aparência:
edit: (com agradecimentos a Jarret Hardie ):
fonte
Além das respostas anteriores, gostaria apenas de dizer que os métodos Objective-C (ou mensagens, se preferir) têm nomes de parâmetros externos e internos .
Então, neste caso:
numberOfRowsInComponent
é o nome externo , aquele que você usaria ao chamar esse método de fora.E
component
é o nome interno do parâmetro, aquele que você usa para se referir ao parâmetro de dentro do método.Espero que isso esclareça um pouco.
fonte
Parece-me que as assinaturas do método Objective-C são mais como sentenças. Cada parâmetro merece uma parte no nome do método. Por exemplo, em C, poderíamos ter um método ( setPersonData ) para definir algumas informações sobre pessoa:
e em Objective-C, o método seria mais descritivo ( setPersonName: andAge: andHeight:) , como
fonte