LoginSignup
41
32

More than 5 years have passed since last update.

【Swift】メソッドがどこから呼ばれているかを知るTips - debug identifiers -

Last updated at Posted at 2016-07-25

あるメソッドが、どのメソッドから呼ばれているのか気になるときがあります。
ファイルを辿っていけば最終的には見つかりますが、複数のメソッドを同時並行で追うのはなかなか面倒です。
そんなとき、debug identifiers(デバッグ識別子)をデフォルトパラメータとして使うと捗ります。

環境

Version 8.0 beta
Swift 3.0

変更前

例えば、こんなメソッドがあるとします。
何の変哲もないIntを合計し、printするだけのメソッドです。
このメソッドの呼び出し元を知りたいとき、どうしたらよいでしょうか?

func addTwoInts(a: Int, b: Int)  {
    let sum = a + b
    print("\(sum)")
}

変更後

#file, #line, #functionを引数として使います。
デフォルトパラメーターとして使うことで、addTwoIntsがどのメソッドに呼ばれたのかがわかるようになります。

func addTwoInts(a: Int, b: Int,
                absolutePath: String = #file, line: Int = #line, function: String = #function)  {
    // 絶対パスをファイル名だけにする
    let file = absolutePath.components(separatedBy: "/").last ?? absolutePath
    print("\(file):\(line) >>> \(function)")

    let sum = a + b
    print("\(sum)")
}

ViewDidLoad()から呼び出すと、ファイル名、ライン番号まで出力される。

出力
ViewController.swift:65 >>> viewDidLoad()

しかも、引数の数を変更したから各所でコンパイルエラーが発生する、といった心配もありません。
addTwoIntsは、2つのIntを受け取れば良いままです。

autocomplete.png

参考

The Swift Programming Language (Swift 2.2)

41
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
32