Open ghost opened 8 years ago
Sorry, I am not familiar with Carthage so I don't have an exact answer, but you need to find a way to pass the compiler flags to whatever project is actually building the framework and pass the -DDebug
flag there.
Please post back here for the benefit of others if you figure out how.
My first idea was to add this flag on the Armchair project. I am not familiar with Carthage too!
I think that the framework must not check "Debug" flag, but let the caller do the job It's more a main project issue to know the mode, the configuration bool is sufficient for the framework
in my code I prefer to use my own flag (name) put only in debug scheme, not in release
#if DEBUG // or TEST or TESTARMCHAIR
Armchair.debugEnabled(true)
#endif
With dependencies manager like cocoapod or carthage it's seems not straightforward to add a compil flag automatically Even If we find a way, the flag will be put for debug and release and no more check will be done (even in release) except if there is config for each scheme...
I know that we could be disagree because have each time a prompt for rate in a release app will be a big annoyance and maybe many people then will give a lower rate because of that But I have trust in developpers, maybe I am wrong!!!
Other idea, keep the current code and add an other method not documented in README for instance unsafeDebugEnabled(..Bool) maybe a tag to make a warn when compiling
There is another issue that can fix this issue, debugEnabled is used for two things :
It is better to do a runtime check and not a compile time check
I disagree. This way automatically prevents log spam on production builds, even if the developer accidentally left in a debug line.
Doing this will solve the carthage issue. Otherwise you have to specify "carthage build -configuration Debug". I think it creates more confusion that the benefit it brings.
Well, my opinion is that it is still better the current way, but because the Carthage and Cocoapods frameworks don't seem to have easy support for adding compiler flags yet, I am open to changing it until they do.
Please feel free to send over a pull request removing the DEBUG flag behavior, and an updated README to reflect the changes.
For now you can force debug mode by doing this
let manager = Manager.defaultManager
let ivar: Ivar = class_getInstanceVariable(manager.dynamicType, "debugEnabled")
let fieldOffset = ivar_getOffset(ivar)
let pointerToInstance = unsafeAddressOf(manager)
UnsafeMutablePointer<Bool?>(pointerToInstance + fieldOffset).memory = true
To enable the debug mode of Armchair, you have to add --configuration Debug
to your carthage build command
My project is configured to enable debug:
Armchair.debugEnabled(true)
added to my codeOn this issue https://github.com/UrbanApps/Armchair/issues/29 problem has been solved for Cocoapods. But what about Carthage?