メソッドの呼び出し元を取得する方法を調べました。
良くある方法はスタックトレースを見る方法です。
class MyClass { func originMethod() { targetMethod() } func targetMethod() { let symbols = NSThread.callStackSymbols() print(symbols.count >= 2 ? symbols[1] : "") } }
以下のような形式で出力されるので少し加工が必要です。
1 MyApp 0x000000010be1f242 _TFC5MyApp7MyClass12originMethodfT_T_ + 18
他にもデフォルト引数で#functionを受け取る方法もあります。
class MyClass { func originMethod() { targetMethod() } func targetMethod(originMethodName: String = #function) { print(originMethodName) } }
こちらだとメソッド名がしっかり出てくれるので扱いやすいです。
targetMethod
参考URL
【Swift】メソッドがどこから呼ばれているかを知るTips - debug identifiers - - Qiita