发布
社区首页 >问答首页 >如何使用代码来识别运行某一行代码的方法或函数?

如何使用代码来识别运行某一行代码的方法或函数?
EN

Stack Overflow用户
提问于 2022-01-11 13:33:17
回答 1查看 40关注 0票数 0

我正在使用Xcode创建一个使用Swift的iOS应用程序,我想创建一个显示警报控制器的全局函数。我将视图控制器作为参数传递给函数,该视图控制器将显示警报控制器。当我调用函数时,我会发送self变量作为呈现视图控制器的参数,因为该函数是从当前显示的视图控制器调用的。

我希望警报控制器能够显示函数调用的位置。作为参数传递给函数的视图控制器对象有一种将其标识表示为字符串值的方法。我可以设置警告消息以显示该字符串值。

是否有一种方法可以让我使用代码来识别从视图控制器对象中调用全局函数的方法?另一种思考它的方法是:是否有一种方法可以让一行代码能够确定它在哪个范围内?

下面是我尝试在代码中做我想做的事情时所发现的:

代码语言:javascript
代码运行次数:0
复制
print("self: \(self)")

调试窗口的结果:

代码语言:javascript
代码运行次数:0
复制
self: <TempSingleViewApp.ViewController: 0x10380b7d0>
EN

回答 1

Stack Overflow用户

发布于 2022-01-11 13:58:07

我想出了一个很好的方法

让您的全局函数有一个带有默认值的字符串参数,并将默认值赋值为"\(#function)"

代码语言:javascript
代码运行次数:0
复制
func globalFunction(param: String, calledFromFunction: String = "\(#function)") {
    print("Called from \(calledFromFunction)")
    // Your function body
}

然后永远不要覆盖默认值,编译器将在调用它时填写调用函数的名称。

请注意,因为这是一个参数,这确实意味着对于用于记录保存的函数,有人可以通过传递显式参数来“欺骗”调用函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70667705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档