我正在制作处理敏感信用卡数据的应用程序.
如果我的代码在调试模式下运行,我想将此数据记录到控制台并进行一些文件转储.
但是在最终的appstore版本上(即它在发布模式下运行时)必须禁用所有这些(安全隐患)!
我会尽力回答我的问题; 所以问题就变成了"这个解决方案路径是正确的还是最好的方式?"
// add `IS_DEBUG=1` to your debug build preprocessor settings
#if( IS_DEBUG )
#define MYLog(args...) NSLog(args)
#else
#define MYLog(args...)
#endif
Run Code Online (Sandbox Code Playgroud) 是的,我知道这个问题已经在 Stack Overflow 上被问过和回答过三次。
Xcode / iOS:如何确定代码是否在 DEBUG / RELEASE 版本中运行?
如何知道 iOS App 中的 Debug 或 Release?
但是我对所有这些答案都有两个问题。
除了第三个问题的最后一个答案外,所有答案都基于在构建时测试预处理器定义。我更喜欢一些在运行时做出决定的技术,只是为了完全确定预处理器定义和实际构建最终如何完成之间没有分歧。(好吧,这可能是不可能的。)
但另一点是,我更喜欢在库模块中进行确定的代码,但测试基于主应用程序模块的构建方式。因此,如果(偶然?)库模块是调试版本,但主应用程序模块是发布版本,那么我希望测试表明该应用程序是发布版本。
也许这没有多大意义(我对 iOS 完全陌生),但是对于我的 Android 应用程序,这是可能的 - 请参阅此处的第一个答案: 如何检查 APK 是否已签名或“调试版本”?
所以我想知道 iOS 应用程序是否存在一些类似的技术。最好是可以从 Swift 完成的事情。