Can't access class from custom dynamic framewo

2019-02-11 10:46发布

问题:

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?

回答1:

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.



回答2:

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.