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

Reply via email to