Giter Club home page Giter Club logo

Comments (9)

fotiDim avatar fotiDim commented on August 17, 2024 7

It is better to do a runtime check and not a compile time check

from armchair.

inket avatar inket commented on August 17, 2024 1

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

from armchair.

coneybeare avatar coneybeare commented on August 17, 2024

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.

from armchair.

 avatar commented on August 17, 2024

My first idea was to add this flag on the Armchair project. I am not familiar with Carthage too!

from armchair.

phimage avatar phimage commented on August 17, 2024

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 :

  • activate debug log
  • show always prompt
    2 variables will be better or 1 variable for logging and one piece of code to show always prompt with preprocessor macro

from armchair.

coneybeare avatar coneybeare commented on August 17, 2024

I disagree. This way automatically prevents log spam on production builds, even if the developer accidentally left in a debug line.

from armchair.

fotiDim avatar fotiDim commented on August 17, 2024

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.

from armchair.

coneybeare avatar coneybeare commented on August 17, 2024

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.

from armchair.

Paul-tag2me avatar Paul-tag2me commented on August 17, 2024

To enable the debug mode of Armchair, you have to add --configuration Debug to your carthage build command

from armchair.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.