gpt4 book ai didi

ios - 如何在swift中从被调用方法中识别调用方法

转载 作者:行者123 更新时间:2023-11-28 11:43:13 25 4
gpt4 key购买 nike

这是一个场景

func callingMethod_A {
self.someCalculation()
}

func callingMethod_B{
self.someCalculation()
}

func someCalculation{
//how to find who called this method? is it callingMethod_A or _B at runtime?
//bla bla
}

我们怎样才能得到在运行时调用它的方法名。
谢谢。

最佳答案

我想出了一个方法来做到这一点,不管怎样,对于 Swift 代码:

定义一个String 参数callingFunction 并给它一个默认值#function。不要从调用者传递任何内容,编译器会提供调用函数名称。

基于@Anu.Krthik 的回答:

func someCalculation (parameter: String, callingMethod: String = #function ) {
print("In `\(#function)`, called by `\(callingMethod)`")
}

func foo(string: String) {
someCalculation(parameter: string)
}

foo(string: "bar")

上面的打印

In `someCalculation(parameter:callingMethod:)`, called by `foo(string:)`

但是,请注意,如果调用者为 callingFunction 参数提供值,则可能会破坏此技术。如果你调用它:

func foo(string: String) {
someCalculation(parameter: string, callingMethod: "bogusFunctionName()")
}

你得到输出

In `someCalculation(parameter:callingMethod:)`, called by `bogusFunctionName()`

相反。

关于ios - 如何在swift中从被调用方法中识别调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53208339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com