programing

Objective-C에서 여러 파라미터를 전달하려면 어떻게 해야 합니까?

oldcodes 2023. 4. 14. 22:04
반응형

Objective-C에서 여러 파라미터를 전달하려면 어떻게 해야 합니까?

Objective-C 메서드 구문에 대한 게시물을 몇 개 읽었는데 메서드에 대한 여러 이름을 이해하지 못하는 것 같습니다.

저는 '이것'이라는 방법을 만들려고 합니다.getBusStops와 함께NSString그리고.NSTimeInterval파라미터 및 반환유형NSMutableArray메서드는 이렇게 구성했지만 실행 시 오류가 발생합니다.

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

또 다른 방법의 예를 보았습니다.

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

이 메서드에 파라미터마다 메서드명이 있는 이유를 모르겠습니다.다음과 같은 방법으로 같은 작업을 수행해야 합니까?

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

각 파라미터명은 적어도 ":"로 구분해야 합니다.엄밀히 말하면 이름은 옵션이지만 읽기 쉽도록 권장합니다.다음과 같이 쓸 수 있습니다.

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

또는 제안하신 내용:

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

Objective-C에는 명명된 매개 변수가 없으므로 콜론 왼쪽에 있는 모든 항목이 메서드 이름의 일부입니다.예를들면,

getBusStops: forTime:

는 메서드 이름입니다.이름이 좀 더 알기 쉽게 구분되어 있습니다.간단한 방법으로 이름을 붙일 수 있습니다.

getBusStops: :

하지만 두 번째 매개변수에 대해서는 잘 알 수 없습니다.

네. Objective-C 메서드 구문은 몇 가지 이유로 다음과 같습니다.이들 중 하나는 지정한 파라미터가 명확해지는 것입니다.예를 들어, 오브젝트를 에 추가하는 경우NSMutableArray특정 인덱스에서 다음 방법을 사용하여 수행할 수 있습니다.

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

이 방법은insertObject:atIndex:오브젝트가 지정된 인덱스에 삽입되어 있는 것이 분명합니다.

실제로, "Hello, World!" 문자열을 의 인덱스 5 에 추가합니다.NSMutableArray불렀다array는 다음과 같이 호출됩니다.

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

[array insertObject:obj atIndex:index];

이렇게 하면 메서드 파라미터의 순서 간의 모호성도 줄어들기 때문에 오브젝트 파라미터를 먼저 전달한 후 인덱스 파라미터를 전달합니다.이는 다수의 인수를 사용하는 함수를 사용할 때 더욱 유용해지고 인수를 전달할 때 발생하는 오류를 줄여줍니다.

또한 메서드 명명 규칙은 Objective-C가 오버로드를 지원하지 않기 때문에 이러한 규칙입니다. 단, 동일한 작업을 수행하지만 다른 데이터 유형을 사용하는 메서드를 기술하려면 예를 들어 다음과 같이 하십시오.NSNumber클래스에는 다음과 같은 몇 가지 객체 생성 방법이 있습니다.

  • + (id)numberWithBool:(BOOL)value;
  • + (id)numberWithFloat:(float)value;
  • + (id)numberWithDouble:(double)value;

C++와 같은 언어에서는 단순히 숫자 방식을 오버로드하여 다른 데이터 유형을 인수로 전달할 수 있습니다. 그러나 Objective-C에서는 이 구문을 통해 함수의 각 변형에 대한 메서드의 이름을 변경하여 동일한 함수의 여러 다른 변형을 구현할 수 있습니다.

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

-getBusStops:forTime:

각 :은 인수를 나타냅니다.메서드 호출에서는 메서드 이름이 :s로 분할되고 인수들이 :s 뒤에 표시됩니다.

[getBusStops: arg1 forTime: arg2]

create 메서드:

-(void)mymethods:(NSString *)aCont withsecond:(NSString *)a-second {
//method definition...
}

메서드를 호출하는 경우:

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

나:

(returnTypeOfSecontArgument) secondArgumentName ;

void는 다음과 .add(int one, int second), OBJ_c한 바와 같이

언급URL : https://stackoverflow.com/questions/722651/how-do-i-pass-multiple-parameters-in-objective-c

반응형