2009-04-06 7 views
155

Objective-C 방법 구문에 대한 게시물을 여러 개 읽었지만 메서드에 대해 여러 이름을 이해하지 못한다고 생각합니다.Objective-C에서 여러 매개 변수를 전달하는 방법은 무엇입니까?

NSStringNSTimeInterval 매개 변수와 반환 유형이 NSMutableArraygetBusStops이라는 메서드를 만들려고합니다. 이 방법은 메소드 이름이 왜

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

가 이해가 안 : 나는 방법으로 다른 예를 보았다

- (NSMutableArray *)getBusStops:(NSString *)busStop 
           (NSTimeInterval *)timeInterval; 

: 이것은 내가 방법을 구축했지만 그것은 분명 실행시 오류를 얻는 방법이다 각 매개 변수에 대해

- (NSMutableArray *)getBusStops:(NSString *)busStop 
         forTime:(NSTimeInterval *)timeInterval 

답변

102

오브젝티브 C는 명명 된 매개 변수를 가지고 있지 않기 때문에 콜론의 왼쪽에있는 모든 메소드 이름의 일부입니다. 예 :

getBusStops: forTime: 

은 메소드의 이름입니다. 이름이 더 복잡해지기 때문에 이름이 더 복잡해집니다. 방법을 간단히 이름을 붙일 수 있습니다.

getBusStops: : 

두 번째 매개 변수에 대해서는 알려주지 않습니다.

137

":"을 사용하여 각 매개 변수 이름을 구분해야합니다. 기술적으로 이름은 선택적이지만 가독성을 위해 권장됩니다.

- (NSMutableArray*)getBusStops:(NSString*)busStop :(NSSTimeInterval*)timeInterval; 

또는 당신은 무엇을 제안 : 그래서 당신은 쓸 수

- (NSMutableArray*)getBusStops:(NSString*)busStop forTime:(NSSTimeInterval*)timeInterval; 
+13

+1 전술 한 바와 같이 OBJ_c에 인수를 할당하는 방법은 다르다 : 오브젝티브 C의 함수 인수는 참으로 명명하지, 위치, 그래서 레이블은 선택과 인간의 소비를위한 것입니다. –

61

예; Objective-C 방법 구문은 다음과 같은 두 가지 이유에서 비슷합니다. 이것들 중 하나는 당신이 지정하는 매개 변수가 무엇인지 분명합니다. 예를 들어, 특정 인덱스에서 NSMutableArray에 객체를 추가하는 경우, 당신은 방법을 사용하여 할 것 :이 방법은 insertObject:atIndex:라고

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index; 

를 그리고 객체가 지정된 삽입되고있는 것은 분명하다 색인.

실제로 "Hello, World!"문자열을 추가하십시오.

NSString *obj = @"Hello, World!"; 
int index = 5; 

[array insertObject:obj atIndex:index]; 

이것은 또한 먼저 오브젝트 파라미터를 전달할 것을 보장있어서 파라미터의 순서간에 모호함을 감소 다음 인덱스 파라미터를 다음과 같이 array라는 NSMutableArray 색인 5에서 호출된다. 이것은 많은 수의 인수를 사용하는 함수를 사용할 때 더 유용하며 인수 전달시 오류를 줄입니다.

또한 Objective-C는 오버로드를 지원하지 않기 때문에 메서드 명명 규칙을 사용합니다. 그러나 동일한 작업을 수행하지만 다른 데이터 유형을 사용하는 메소드를 작성하려는 경우이 작업을 수행 할 수 있습니다. 예를 들어 NSNumber 클래스를 가져옵니다.

  • + (id)numberWithBool:(BOOL)value;
  • + (id)numberWithFloat:(float)value;
  • + (id)numberWithDouble:(double)value; 같은 C++와 같은 언어에서

, 당신은 단순히 서로 다른 데이터 유형을 허용 할 수 방법을 과부하 것이다 :이 같은 여러 객체 생성 방법이있다 인수로서 전달된다. 그러나 Objective-C에서이 구문을 사용하면 함수의 각 변형에 대한 메서드 이름을 변경하여 동일한 함수의 여러 변형을 구현할 수 있습니다.

+0

은 함수 이름에 매개 변수 이름이 포함 된 경우 메서드 호출 (메시지 전송) 중에 필요한 매개 변수 이름입니까? – Naveen

23

각 매개 변수 앞에있는 텍스트는 메서드 이름의 부분입니다. 예제에서 메소드 이름은 실제로는

각 인수가 나타납니다. 메소드 호출에서 메소드 이름은 : s에서 분리되고 인수는 : s 다음에 나타납니다. 예 :

[getBusStops: arg1 forTime: arg2] 
+3

메서드의 이름을 추가하는 것을 잊었을 것 같습니다. –

4

방법 작성을 위해 : 호출

-(void)mymethods:(NSString *)aCont withsecond:(NSString *)a-second { } 

방법 :

[mymethod:self.contoCorrente withsecond:self.asecond]; 
-2
(int) add: (int) numberOne plus: (int) numberTwo ; 
(returnType) functionPrimaryName : (returnTypeOfArgumentOne) argumentName functionSecondaryNa 

나에게 :

(returnTypeOfSecontArgument) secondArgumentName ; 

OTH에서와 같은을 어 언어로 우리가 문법을 무효 add(int one, int second) 다음 사용하지만