一尘不染

删除发行版iOS Swift的println()

swift

println()如果我不在Debug版本中,我想全局忽略Swift代码中的所有调用。我找不到任何健壮的逐步说明,希望能提供一些指导。有没有办法做到这一点从全球来看,还是我需要围绕每一个println()#IF DEBUG/#ENDIF报表?


阅读 225

收藏
2020-07-07

共1个答案

一尘不染

如前所述,我是一名学生,需要对定义的事情有更明确的了解。经过大量研究,我需要遵循的顺序是:

单击Xco​​de项目窗口左侧文件浏览器顶部的项目名称。此行包含项目名称,有多少个构建目标以及iOS SDK版本。

选择“ 构建设置” 选项卡,然后向下滚动到底部附近的“ Swift编译器-自定义标志 ”部分。单击 其他标志
旁边的向下箭头以展开该部分。

单击“ 调试” 行以将其选中。将鼠标光标放在该行的右侧,然后双击。将出现一个列表视图。单击列表视图左下方的 +
按钮以添加一个值。文本字段将变为活动状态。

在文本字段中,输入文本-D DEBUG,然后按 Return 键以提交该行。

将新的Swift文件添加到您的项目。您将要为文件创建一个自定义类,因此请按照以下内容输入文本:

class Log {

  var intFor : Int

  init() {
    intFor = 42
   }

  func DLog(message: String, function: String = __FUNCTION__) {
    #if DEBUG
      println("\(function): \(message)")
    #endif
  }
}

今天我很难让该类被Xcode接受,因此init可能比必要的要重一些。

现在,您将需要在打算使用新的自定义函数的任何类中引用您的自定义类,而不是println()在每个适用的类中将此添加为属性:

   let logFor = Log()

现在,你可以替换的任何实例println()logFor.DLog()。输出还包括在其中调用该行的函数的名称。

请注意,在类内部函数中,除非我将该函数的副本作为该类中的类函数进行复制,否则无法调用该函数,并且输入println()内容也更加灵活,因此无法在我的代码。

2020-07-07