1. ホーム
  2. ios

[解決済み] リリース版iOS Swiftのprintln()を削除する。

2023-04-19 23:37:10

質問

私は、グローバルにすべての println() の呼び出しをグローバルに無視したいのですが、デバッグビルドでない場合、Swift コード内のすべての 呼び出しをグローバルに無視します。このための堅牢なステップバイステップの指示を見つけることができないので、指導をお願いします。 println()#IF DEBUG/#ENDIF ステートメントを使用しますか?

どのように解決するのですか?

前述のとおり、私は学生なので、物事をもう少し明確に定義しないとついていけないのです。多くの研究の後、私が従う必要がある順序は次のとおりです。

Xcode プロジェクト ウィンドウの左側にあるファイル ナビゲーターの上部にあるプロジェクト名をクリックします。これは、プロジェクトの名前、ビルド ターゲットがいくつあるか、および iOS SDK のバージョンを持つ行です。

を選択します。 ビルド設定 タブを選択し、"までスクロールダウンしてください。 Swiftコンパイラ - カスタムフラグ "セクションの一番下までスクロールします。の隣にある下矢印をクリックします。 その他のフラグ の横の下矢印をクリックすると、セクションが展開されます。

をクリックします。 デバッグ の行をクリックして選択します。行の右側にマウスカーソルを置き、ダブルクリックします。リストビューが表示されます。をクリックします。 + ボタンをクリックして、値を追加します。テキストフィールドがアクティブになります。

テキストフィールドに、テキストを入力します。 -D DEBUG を入力し を押します。 戻る を押して、その行をコミットしてください。

プロジェクトに新しい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() は入力に対してもう少し柔軟性があるので、私のコードではすべてのインスタンスでこれを使用することはできませんでした。