Objective-C의 메서드 구문
누가 이 메서드 선언 구문을 설명해 줄 수 있습니까?이 기능에서는 UI PickerView(iPhone의 슬롯머신 UI) 행 수가 반환됩니다.제가 알기로는 그 방법의 이름은 '입니다.pickerView
NSInteger를 반환합니다.
이것은 '라는 이름의 UI Pickerview로 포인터를 전달합니다.pickerView
... 먼저, 메서드를 매개 변수와 동일한 이름으로 부르는 이유는 무엇입니까?
다음으로 행을 카운트하는 구성 요소를 알려주는 구성 요소라는 NSInteger 매개 변수가 있습니다.메서드의 본문에 있는 것을 결정하는 논리입니다.
'란?numberOfRowsInComponent
반환하는 값을 설명하는 것처럼 보이지만 매개 변수의 중간에 있습니다.
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if (component == kStateComponent)
return [self.states count];
return[self.zips count];
}
목표-C 방법은 자체 문서화되도록 설계되었으며 Smalltalk의 풍부한 전통을 차용합니다.
여기 있는 걸 설명해 드리죠-(NSInteger) pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component
.
- (NSInteger)
이 첫 번째 부분은 NSInteger 개체를 반환하는 Objective C 인스턴스 메서드임을 나타냅니다.그-
(으)는 이것이 인스턴스 메서드임을 나타냅니다. 여기서,+
클래스 메서드임을 나타냅니다.괄호 안의 첫 번째 값은 메서드의 반환 형식입니다.pickerView:
이 부분은 메시지 이름의 일부입니다.이 경우 전체 메시지 이름은 다음과 같습니다.pickerView:numberOfRowsInComponent:
Objective-C 런타임은 이 메서드 정보를 가져와 지정된 수신기로 보냅니다.순수한 C에서, 이것은 다음과 같습니다.
NSInteger pickerView(UIPickerView* pickerView, NSInteger component)
그러나 목표-C이므로 추가 정보가 메시지 이름에 입력됩니다.(UIPickerView*)pickerView
이 부분은 입력의 일부입니다.여기 입력은 유형입니다.UIPickerView*
로컬 변수 이름인 pickerView가 있습니다.numberOfRowsInComponent:
이 부분은 메시지 이름의 두 번째 부분입니다.여기에서 볼 수 있듯이, 메시지 이름은 수신자에게 전달하는 정보를 나타내기 위해 분할됩니다.따라서 foo와 bar 변수를 사용하여 myObject를 개체에 메시지로 표시하려면 다음과 같이 입력합니다.
[myObject pickerView:foo numberOfRowsInComponent:bar];
C++ 스타일과 반대로:
myObject.pickerView(foo, bar);
.(NSInteger)component
이것이 입력의 마지막 부분입니다.여기 입력은 유형입니다.NSInteger
구성 요소의 로컬 변수 이름을 가집니다.
Objective-C에서 메서드의 이름은 인수 및 유형이 아닌 선언의 모든 부분으로 구성됩니다.따라서 이 메서드의 이름은 다음과 같습니다.
pickerView:numberOfRowsInComponent:
이 방법은 다음과 같이 보이는 C-스타일 함수와 동일합니다.
편집: (자렛 하디 덕분에):
NSInteger pickerViewNumberOfRowsInComponent(UIPickerView * pickerView, NSInteger component)
이전 답변에 추가하여 Objective-C 메서드(또는 원하는 경우 메시지)는 외부 매개 변수 이름과 내부 매개 변수 이름을 가지고 있습니다.
이 경우:
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
numberOfRowsInComponent
는 외부에서 이 메서드를 호출할 때 사용하는 외부 이름입니다.
그리고.component
메서드 내부에서 매개 변수를 참조하는 데 사용하는 매개 변수의 내부 이름입니다.
그것이 조금이라도 맑아지길 바랍니다.
Objective-C 메서드 시그니처는 문장에 더 가깝다고 생각합니다.각 매개 변수는 메서드 이름에 포함된 부품을 사용할 수 있습니다.예를 들어, C에서 우리는 사람에 대한 몇 가지 정보를 설정하는 방법(setPersonData)을 가질 수 있습니다.
void setPersonData( char* name, int age, float height ) {
그리고 목표-C에서 방법은 더 설명적일 것입니다(setPersonName: and Age: and Height:).
- (void) setPersonName: (char *)name andAge:(int)age andHeight:(float)height {
언급URL : https://stackoverflow.com/questions/683211/method-syntax-in-objective-c
'programing' 카테고리의 다른 글
C#에 대해 가장 좋아하는 확장 방법은 무엇입니까? (codeplex.com/extensionoverflow) (0) | 2023.05.18 |
---|---|
데이터가 Null입니다.이 메서드 또는 속성은 Null 값에 대해 호출할 수 없습니다. (0) | 2023.05.18 |
Xcode: 빌드 실패, 오류 메시지 없음 (0) | 2023.05.18 |
jQuery: 테이블의 행 수 카운트 (0) | 2023.05.18 |
null 값에 대한 zure 테이블 저장소 쿼리 (0) | 2023.05.18 |