我是xcode的初学者,想要动态打印正在执行的功能。
所以我想要一个能显示类似
的功能functionExecuted() executed in ClassName
这会动态获取函数名和类名。 我已经有类似的事了:
class MyViewController: ViewController {
func appActivity() {
var class: String = "MyViewController"
println("\(___FUNCTION___) executed in \(class)")
}
override func viewDidLoad() {
// Etc. code
appActivity()
}
}
在加载视图时会运行appActivity()函数。但这将产生:
appActivity() executed in MyViewController
当我在寻找:
viewDidLoad() executed in MyViewController
我希望保留appActivity不接受任何输入参数。此外,不是显式定义类名,而是动态获取函数所在类的名称。
我知道这可能不是实现这一目标的最佳方式,但更多的是学习和理解。
答案 0 :(得分:0)
我的建议是您在扩展程序中执行此操作。扩展可能是Swift,恕我直言的亮点。您基本上可以装饰方法,不仅包括您自己的类,还包括其他类,包括框架类。想知道viewDidLoad何时调用了你的超类?只需创建一个扩展程序,然后观察控制台中显示的消息。
其他优点:
Swift Cocoa代码是以真正具有创造性的方式构建的扩展,显示了方面的一些智能,而且是目标C的分类组织。当你结合扩展和协议时,你有特征。
答案 1 :(得分:0)
我经常使用它。它可以作为顶级函数实现,并且非常小。
func Log(_ message: String = "", klass: AnyObject, file: String = __FILE__, function: String = __FUNCTION__) {
NSLog("%@","\(file.lastPathComponent) \(function) \(klass.self) - \(message)")
}