2014-09-23 9 views
1

내가 좋아하는, 오브젝티브 -c 두 기능을 만드는 것이 objc 기능을 찾을 수없는 내 신속 코드에 있지만 전화 showName 경우 컴파일 할 수 없습니다 :스위프트 변수 매개 변수

를 이 문제를 해결하기 위해

//Objective_C code: 
@interface DemoObject : NSObject 

- (void)showName:(NSString *)name, ...; 
- (void)showTitle:(NSString *)title; 

@end 

@implementation DemoObject 
- (void)showName:(NSString *)name, ... { 
NSLog(@"name=%@", name); 
} 

- (void)showTitle:(NSString *)title { 
[self showName:title, @""]; 
} 
@end 

//Swift Code: 
var obj = DemoObject() 
obj.showTitle(""); 
obj.showName(""); //compile error here 

방법 :

여기 내 코드입니다. 세 번째 라이브러리를 사용하기 때문에 변수 매개 변수 함수가 포함되어 있습니다.

+0

더 많은 코드를 게시해야합니다 (예 : 함수의 본문과 신속한 코드). – nestedloop

+0

@nestedloop 코드를 자세히 추가했습니다. 그것을 해결할 수 있습니까? 나는 그것이 빠른 버그라고 생각한다. –

+0

가능한 복제 http://stackoverflow.com/questions/24195796/how-do-you-call-an-objective-c-variadic-method-from-swift? – mash

답변

3

Swift는 varargs가있는 C 함수 또는 Objective-C 메서드를 가져 오지 않습니다.

varargs 기능을 가진 좋은 API는 va_list (예 : printfvprintf)을 취하는 함수의 다른 형식을 사용합니다. 그렇지 않으면 하나씩 인수를 추가하여 동일한 것을 달성하는 쉬운 방법이 있습니다.

+0

나는 이것을 수정했고 스위프트가 실제로 이것을지지하지 않는다는 것을 확인할 수있다. 자동 완성 기능은 적절한 기능 서명을 표시하지 않으며 수동으로 추가 매개 변수를 추가하려고하면 앱이 컴파일되지 않습니다. – asiby