2012-02-26 3 views
0

나는 objective-c (C#/Java 배경)의 멍청이이며, Picker View 컨트롤 (그리고 우리가 필요로하는 다른 방법들)에서 사용되는 objective-c 구문을 이해하는 데 어려움이있다.) Picker View를 사용하기위한 구현 : 이해하기 위해다음 구문의 의미는 무엇입니까? (objective-c 스타일의 메소드 호출)

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row 
      forComponent:(NSInteger)component 

, 나는 다음과 같은 구문에 매핑하려고했으나 완전히 다른 것 같다.

-(NSString *)MethodName: (UIPickerView *)FirstParam and:(NSInteger)SecondParam 
      and:(NSInteger)ThirdParam 

누군가가 부품을 분해하고 설명해 주시겠습니까?

답변

7

그것은 그것은 NSString에 대한 포인터를 반환 및 유형 UIPickerView *, NSInteger 및 NSInteger의 매개 변수를 필요로

pickerView:titleForRow:forComponent:

라는 방법입니다.

자바와 같은 방법 선언은 다음과 같습니다

NSString pickerViewTitleForRowForComponent(UIPickerView pickerView, NSInteger row, NSInteger component)

1

메소드 이름 (선택)는 모든 세 가지 구성 요소가 있습니다 : pickerView:titleForRow:forComponent:. 그걸 제외하고, 당신은 그 말이 맞습니다. (예, 인수 및 선택기 세그먼트는 Objective-C에서 함께 혼합됩니다. 이것은 강점 중 하나이며 긴 메시지 표현의 가독성을 돕습니다.)

5

차이점은 Objective-C에서 메소드 이름은 부분 , java와 같은 단일 문자열이 아닙니다. "-"처음에 마이너스 편지가 당신의 인스턴스와이 메소드를 호출 할 수 있다는 것을 의미한다

:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row ... 
/* ^  ^   ^  ^  ^   
     |   |    |   |   |    
    Return Type  |  Argument Type  | 2nd part of m. name  etc.... 
        |       | 
     Part of method name   Argument Name 
*/ 
2

... 에릭의 정렬 및 bdares 대답은 모든

단지 한 가지 더 설명 클래스. 이 경우 메서드는 pickerView 자체에서 호출합니다. 호출하지는 않고 UIPickerViewDelegate 프로토콜을 사용하는 클래스에서 구현합니다. 즉 해당 프로토콜에서 요구하는 모든 메서드를 사용한다는 의미입니다.

일반적으로 인스턴스에서 빼기 기호로 시작하는 메서드를 호출해야합니다. 예를 들어 , 방법

- (void)addSubview:(UIView *)view 

UIViewClass 선언,이 방법으로 호출해야합니다 :

[yourUIViewInstance addSubview:yourSubViewInstance]; 

플러스 "+"기호로 선언 방법은 당신이 경우에없는 그들을 호출 할 필요가 있다는 것을 의미하면서 (당신은 전혀 할당되지 않은 인스턴스가있을 수 있습니다)하지만 UIView의 방법에 대한 클래스 자체 예를 들어

+ (void)setAnimationDelay:(NSTimeInterval)delay 
,

이 방법으로 전화해야합니다.

[UIView setAnimationDelay:1.0]; 
관련 문제