AFAIK ObjectiveC (C 및 C++과 유사)는 사용자가 직접 염두에두고있는 것을 허용하는 구문을 제공하지 않습니다.
일반적인 해결 방법은 두 가지 버전의 함수를 만드는 것입니다. 하나는 ...를 사용하여 직접 호출 할 수 있고 다른 하나는 다른 매개 변수를 호출하여 va_list 형식으로 매개 변수를 전달합니다.
..
[obj aMethod:@"test this %d parameter", 1337);
[obj anotherMethod:@"test that %d parameter", 666);
..
-(void) aMethod:(NSString *)a, ...
{
va_list ap;
va_start(ap, a);
[self anotherMethod:a withParameters:ap];
va_end(ap);
}
-(void) anotherMethod:(NSString *)a, ...
{
va_list ap;
va_start(ap, a);
[self anotherMethod:a withParameters:ap];
va_end(ap);
}
-(void) anotherMethod:(NSString *)a withParameters:(va_list)valist
{
NSLog([[[NSString alloc] initWithFormat:a arguments:valist] autorelease]);
}
-anotherMethod : withParameters : [[NSString alloc] init] –
에 자동 회수 기능을 추가하고 @Bill – Till
을 수정해야합니다. 가변 인수 목록을 predicateWithFormat에 전달하고 싶습니다. 제안한 후에는 Apple이 사실상 predicateWithFormat : arguments를 제공한다는 사실을 깨달았습니다. – ArtOfWarfare