我正在做一个处理敏感信用卡数据的应用程序。
如果我的代码在调试模式下运行,我想将这些数据记录到控制台并进行一些文件转储。
然而,在最终的appstore版本(即当它运行在发布模式时),必须禁用所有这些(安全隐患)!
我会尽力回答我的问题;所以问题就变成了“这个解决方案是正确的还是最好的方法?”
// add `IS_DEBUG=1` to your debug build preprocessor settings
#if( IS_DEBUG )
#define MYLog(args...) NSLog(args)
#else
#define MYLog(args...)
#endif
熊子韬的答案和我用的很接近;我还包括文件名(通过剥离file的路径)。
#ifdef DEBUG
#define NSLogDebug(format, ...) \
NSLog(@"<%s:%d> %s, " format, \
strrchr("/" __FILE__, '/') + 1, __LINE__, __PRETTY_FUNCTION__, ## __VA_ARGS__)
#else
#define NSLogDebug(format, ...)
#endif
所以我在这里找到了我的方法,同时试图弄清楚为什么我的代码在我的发布版本中不能执行,而其他的答案都没有提到如何制作
#如果释放
工作。
我不希望在DEBUG模式下发生任何事情,所以我只使用#if RELEASE,假设(错误地)它会工作。
#如果释放
//做一些特定的释放
# endif
你可以(至少从XCode 14开始)到Project -> Combined -> Swift Compiler - Custom Flags(见下面的截图)。在RELEASE部分添加一个RELEASE值,如果RELEASE可以像上面一样工作,则使用#。
注意,你不希望通过释放来点击空白区域旁边的+,只需双击空白区域。如果你这样做了,它会添加一个“任何架构/任何SDK”行,这使得RELEASE标志不能正常工作。
正确的版本:
不正确的版本: