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
'programing' 카테고리의 다른 글
Windows 명령줄에서 폴더 크기 가져오기 (0) | 2023.04.14 |
---|---|
코드 내에 Python 모듈을 설치하는 방법은 무엇입니까? (0) | 2023.04.14 |
부트스트랩3과 수직 정렬 (0) | 2023.04.14 |
다른 cmd.exe 프롬프트에서 새 cmd.exe 창을 만듭니다. (0) | 2023.04.14 |
텍스트 영역의 크기 조정 가능한 속성을 비활성화하려면 어떻게 해야 합니까? (0) | 2023.04.09 |