Hi Rien, looks like a good way around my problem.
Still I wonder why this does not work in Swift as it does work in Objective-C or even in strongly typed checked C++. Maybe it is some kind of Swift’s security measure to avoid hard-to-debug bugs in C++ caused by virtual table inconsistencies. Anyway, thanks for the help. J. > On Mar 6, 2017, at 6:01 PM, Rien <r...@balancingrock.nl> wrote: > > Well, that was a bit short… > > When you want to use logging, define the ACC “USE_LOGGING” in the build > settings. > When you don’t want to use logging, don’t define the ACC. > > PS: You can get my logging framework from github: > https://github.com/Balancingrock/SwifterLog > > Regards, > Rien > > Site: http://balancingrock.nl > Blog: http://swiftrien.blogspot.com > Github: http://github.com/Balancingrock > Project: http://swiftfire.nl > > > > > >> On 06 Mar 2017, at 17:58, Rien <r...@balancingrock.nl> wrote: >> >> You need conditional compilation. >> >> Called “Active Compilation Conditions” in the build settings. >> >> For example define a ACC of “USE_LOGGING” >> >> Then in your code: >> >> #if USE_LOGGING >> >> import Logging >> >> #else >> >> struct Logging { >> func debug(message: string) {} >> } >> >> #endif >> >> >> >> >> Regards, >> Rien >> >> Site: http://balancingrock.nl >> Blog: http://swiftrien.blogspot.com >> Github: http://github.com/Balancingrock >> Project: http://swiftfire.nl >> >> >> >> >> >>> On 06 Mar 2017, at 17:26, Jakub Bednář via swift-users >>> <swift-users@swift.org> wrote: >>> >>> Hello everyone, >>> >>> I am trying to add optional logging into my framework, but for sake of this >>> question, lets assume I want to add optional logging into an app. I have >>> created an example with following setup: >>> >>> 1. Logging.framework declares >>> >>> public protocol Logging { >>> func debug(message: String) >>> } >>> >>> and I have build the framework for the app to see it. >>> >>> 2. Application has >>> >>> import Logging >>> >>> public class Engine { >>> >>> let logger: Logging? >>> >>> public init(withLogger logger: Logging? = nil) { >>> self.logger = logger >>> } >>> >>> public work() { >>> self.logger?.debug(“Working”) >>> } >>> } >>> >>> Now I don’t have the Logging.framework in Embed Binaries nor Link >>> Frameworks lists. My app builds ok, but then fails to start telling me that >>> Logging.framework was not loaded. I checked the binary using otool -L and >>> Logging.framework is still referenced by the binary. Is there any way how >>> to achieve my goal? This would be trivial with Objective-C and I still >>> can’t figure it out in Swift. >>> >>> Thanks a lot, >>> >>> J. >>> >>> _______________________________________________ >>> swift-users mailing list >>> swift-users@swift.org >>> https://lists.swift.org/mailman/listinfo/swift-users >> > _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users