IT

목표 C의 메소드 구문

lottoking 2020. 5. 21. 08:17
반응형

목표 C의 메소드 구문


누군가 나를 위해이 메소드 선언 구문을 설명 할 수 있습니까? 이 함수에서 UIPickerView (iPhone의 슬롯 머신 UI)의 행 수가 리턴됩니다. 내 이해 pickerView에서이 방법은 ' '이며 NSInteger를 반환합니다.

pickerView먼저 ' '... 라는 UIPickerview에 대한 포인터를 전달합니다 . 왜 메소드가 매개 변수와 동일한 이름을 사용합니까?

다음으로 component라고하는 NSInteger 파라미터가 있는데, 어떤 컴포넌트가 행을 계산하는지 알려줍니다. 메소드 본문에있는 것을 결정하는 논리입니다.

'는 무엇입니까 numberOfRowsInComponent? 우리가 반환하는 가치를 설명하는 것처럼 보이지만 매개 변수의 중간에 있습니다.

- (NSInteger) pickerView:(UIPickerView *)pickerView 
 numberOfRowsInComponent:(NSInteger)component
{
    if (component == kStateComponent)
        return [self.states count];

    return[self.zips count];
}

Objective-C 방법은 자체 문서화되도록 설계되었으며 스몰 토크의 풍부한 전통을 그대로 활용합니다.

나는 당신이 여기있는 것을 설명하려고 노력할 것 -(NSInteger) pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component입니다.

  • - (NSInteger)
    이 첫 번째 부분은 이것이 NSInteger 객체를 반환 하는 Objective C 인스턴스 메소드 임을 나타냅니다 . -(대시)이이 있음을 나타냅니다 인스턴스 A는 방법 +이이 있음을 나타냅니다 클래스 방법. 괄호 안의 첫 번째 값은 메소드의 리턴 유형입니다.

  • pickerView:
    이 부분은 메시지 이름 의 일부입니다 . 전체 메시지 이름 이 경우입니다 pickerView:numberOfRowsInComponent:. Objective-C 런타임은이 메소드 정보를 가져 와서 지정된 수신자에게 보냅니다. 순수한 C에서는 다음과 같습니다
    NSInteger pickerView(UIPickerView* pickerView, NSInteger component). 그러나 이것은 Objective-C이므로 추가 정보가 메시지 이름에 압축되어 있습니다.

  • (UIPickerView*)pickerView
    이 부분은 입력의 일부입니다 . 여기서 입력은 유형 UIPickerView*이며 로컬 변수 이름이 pickerView입니다.

  • numberOfRowsInComponent:
    이 부분은 메시지 이름 의 두 번째 부분입니다 . 여기에서 볼 수 있듯이 수신자에게 전달할 정보를 나타 내기 위해 메시지 이름이 분할됩니다. 따라서 변수 foo 및 bar를 사용하여 myObject 객체에 메시지
    [myObject pickerView:foo numberOfRowsInComponent:bar];
    를 보내려면 C ++ 스타일과 반대로 다음 과 같이 입력 하십시오
    myObject.pickerView(foo, bar);.

  • (NSInteger)component
    이것은 입력 의 마지막 부분입니다 . 여기서 입력은 유형 NSInteger이며 로컬 변수 이름은 component입니다.


Objective-C에서 메소드 이름은 인수 및 유형이 아닌 선언의 모든 부분으로 구성됩니다. 따라서이 방법의 이름은 다음과 같습니다.

pickerView:numberOfRowsInComponent:

이 방법은 다음과 같은 C 스타일 함수와 동일합니다.

편집 : ( Jarret Hardie 덕분에 ) :

NSInteger pickerViewNumberOfRowsInComponent(UIPickerView * pickerView, NSInteger component)

이전 답변에 덧붙여 Objective-C 메소드 (또는 원하는 경우 메시지)에 외부내부 매개 변수 이름 이 있다고 말하고 싶습니다 .

따라서이 경우 :

- (NSInteger) pickerView:(UIPickerView *)pickerView 
 numberOfRowsInComponent:(NSInteger)component

numberOfRowsInComponent외부 에서이 메소드를 호출 할 때 사용 하는 외부 이름입니다.

그리고 매개 변수 component내부 이름이며 메서드 내부에서 매개 변수를 참조하는 데 사용됩니다.

희망이 조금 있습니다.


Objective-C 메서드 서명은 문장과 더 비슷합니다. 각 매개 변수는 메소드 이름의 일부를 가질 자격이 있습니다. 예를 들어, C 에서는 person에 관한 정보를 설정 하는 메소드 ( setPersonData )를 가질 수 있습니다 .

void setPersonData( char* name, int age, float height ) {

대물-C에있어서 더 설명 (것이다 : andAge : setPersonName를 andHeight : ) 등

- (void) setPersonName: (char *)name andAge:(int)age andHeight:(float)height {

참고 URL : https://stackoverflow.com/questions/683211/method-syntax-in-objective-c

반응형