My test dynamic iOS framework XYZFramework
consists of a single class XYZ
.
However, even after declaring:
import XYZFramework
I am unable to access this class, with any attempts yielding the following error:
Use of unresolved identifier 'XYZ'
How do I resolve this issue?
Found the answer. I had to prefix my class declaration with the public
modifier. So this:
class XYZ {
}
became:
public class XYZ {
}
And, as always, trashing the ~/Library/Developer/Xcode/DerivedData
folder fixed any minor complications.
If your Framework's class also contained Static and Instance Member functions you also need some more public
keywords adding.
// set the Framework class to Public
public class FrameworkHello{
// set the initializer to public, otherwise you cannot invoke class
public init() {
}
// set the function to public, as it defaults to internal
public static func world() {
print("hello from a static method")
}
}
Now you can access this via your Swift code or with lldb:
(lldb) po FrameworkHello.world()
hello from a static method
This ensures the Framework's Symbols are accessible in a Release build.