我正在使用Xcode创建一个使用Swift的iOS应用程序,我想创建一个显示警报控制器的全局函数。我将视图控制器作为参数传递给函数,该视图控制器将显示警报控制器。当我调用函数时,我会发送self变量作为呈现视图控制器的参数,因为该函数是从当前显示的视图控制器调用的。
我希望警报控制器能够显示函数调用的位置。作为参数传递给函数的视图控制器对象有一种将其标识表示为字符串值的方法。我可以设置警告消息以显示该字符串值。
是否有一种方法可以让我使用代码来识别从视图控制器对象中调用全局函数的方法?另一种思考它的方法是:是否有一种方法可以让一行代码能够确定它在哪个范围内?
下面是我尝试在代码中做我想做的事情时所发现的:
print("self: \(self)")
调试窗口的结果:
self: <TempSingleViewApp.ViewController: 0x10380b7d0>
发布于 2022-01-11 13:58:07
我想出了一个很好的方法
让您的全局函数有一个带有默认值的字符串参数,并将默认值赋值为"\(#function)"
func globalFunction(param: String, calledFromFunction: String = "\(#function)") {
print("Called from \(calledFromFunction)")
// Your function body
}
然后永远不要覆盖默认值,编译器将在调用它时填写调用函数的名称。
请注意,因为这是一个参数,这确实意味着对于用于记录保存的函数,有人可以通过传递显式参数来“欺骗”调用函数。
https://stackoverflow.com/questions/70667705
复制相似问题