5

I have summarized the steps of the problem, I have a C function defined in Objective-C:

ObjC.h

#import <Foundation/Foundation.h>

void cuslog(NSString *format, ...);

@interface ObjC : NSObject

@end

ObjC.m

#import "ObjC.h"

@implementation ObjC

@end

void cuslog(NSString *format, ...)
{
     // Implementation
}

I exposed it in Bridging-Header.h:

#import "ObjC.h"

// Also tried to put this line in bridging header
void cuslog(NSString *format, ...);

In Swift I intend to call the function like this:

cuslog("Some log")

But the error says:

"Use of unresolved identifier 'cuslog'"

What is the correct way to call the function in Swift?

1

1 Answer 1

5

According to the Swift devs, C variadic functions are not compatible with Swift variadics, so you won't be able to call your function directly.

The only workaround at this time is to write a non-variadic wrapper in C or Obj-C, and call that from Swift.

Sign up to request clarification or add additional context in comments.

1 Comment

Plus, any decent API with C/Obj-C variadic functions should have a non-variadic version that takes a va_list argument, or a way to add elements one by one. Either of these are callable from Swift.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.