仅在特定位置使用#if Debug时才会发生崩溃。很奇怪

时间:2016-10-07 16:15:48

标签: ios swift

我在调试模式下开发了我的应用程序,并且运行成功,没有任何问题。然后,当我切换到发布模式时,它在我要求它从网络下载图像的部分崩溃。 XCode正在告诉我bad_Access并给我一个堆栈,但我无法理解它。

所以我对这个问题进行了一些研究。很多人都在谈论块没有保留在堆栈中或者指针弱。然后我去评论我的代码的每个部分,看看哪个代码导致了这次崩溃。

然后我非常惊讶,当我引用下面的代码时,它解决了问题。

enter image description here

这是一个帮助函数,我写的只打印调试版本中的log msg。

我不知道为什么会这样。

我也尝试在我的应用程序内的任何其他位置调用此打印消息,这根本不会导致任何崩溃。

以下是我使用此宏并导致崩溃的详细说明。

我有一个网络管理器类,在该类中它有静态函数,调用alamofire API来获取JSON文件。静态类有一个完整的参数,它接受一个在alamofire完成其工作时调用的块。在完整的块中,我使用该JSON文件(包含数组)创建了每个项目对象。在同一个块中创建项目之后,我调用另一个调用网络管理器类中另一个静态方法的函数从我在JSON文件中获取的URL下载图像。在调用静态方法之前,我使用printMsg打印出我要下载的图像,因为#if DEBUG

而崩溃的地方

我首先想到的可能是我不应该在networkManger中调用静态方法来下载图像,但问题是打印功能中使用的#if让我震惊。

所以我的问题是为什么会发生这种情况?

0 个答案:

没有答案
相关问题