LiohAu LiohAu - 8 months ago 51
Swift Question

Swift does not generates forward declaration for protocol

I have a swift class defined in a framework that is being used from an obj-c app.

The generated -Swift.h header contains the swift classes marked with @objc but there's one property that makes the compilation fail.

This property is defined like this in swift code :

public var storageClass : StorageProtocol.Type = UserDefaultStorage.self

and so the generated obj-c property looks like this

@property (nonatomic) Class <StorageProtocol> __nonnull storageClass;

But Xcode does not accepts the "StorageProtocol" symbol here, because the forward declaration "@protocol StorageProtocol;" is missing.

If I add a new var defined like this :

public var storage : StorageProtocol? = nil

The forward declaration is added on top of class that define these properties and the -Swift.h compilation succeed.

So it looks like a bug in the -Swift.h generation, but is there another way to force that forward declaration without using a dummy var ?

Answer Source

I did not find any other way than using a dummy var...