Как распечатать стек вызовов в Swift? В Objective-C вы можете распечатать стек вызовов, выполнив следующие действия: NSLog(@"%@", [NSThread callStackSymbols]); Как вы это делаете в Swift без использования класса Foundation? Ответ 1 Как говорит Джейкобсон, используйте следующее: Swift 2: print(NSThread.callStackSymbols()) Swift 3: print(Thread.callStackSymbols) Этот код Swift. Он использует метод Foundation, но также делает 90% + того, что вы делаете на iOS. EDIT: Обратите внимание, что форматирование выглядит лучше, если вы используете: Thread.callStackSymbols.forEach{print($0)} В командной строке отладчика вы можете ввести e Thread.callStackSymbols.forEach{print($0)} Ответ 2 Для Swift 3 используйте: print(Thread.callStackSymbols) или для лучшего форматирования for symbol: String in Thread.callStackSymbols { print(symbol) } Ответ 3 Это немного улучшает выход. for symbol: String in NSThread.callStackSymbols() { NSLog("%@", symbol) } Ответ 4 Здесь большой класс полезности, который я нашел на github: https://github.com/nurun/swiftcallstacktrace Вы получаете кортеж (класс, метод) любого символа трассировки стека, чтобы вы могли сделать чистую распечатку. CallStackAnalyser.classAndMethodForStackSymbol(NSThread.callStackSymbols()[2])
Ответ 1 Как говорит Джейкобсон, используйте следующее: Swift 2: print(NSThread.callStackSymbols()) Swift 3: print(Thread.callStackSymbols) Этот код Swift. Он использует метод Foundation, но также делает 90% + того, что вы делаете на iOS. EDIT: Обратите внимание, что форматирование выглядит лучше, если вы используете: Thread.callStackSymbols.forEach{print($0)} В командной строке отладчика вы можете ввести e Thread.callStackSymbols.forEach{print($0)}
Ответ 2 Для Swift 3 используйте: print(Thread.callStackSymbols) или для лучшего форматирования for symbol: String in Thread.callStackSymbols { print(symbol) }
Ответ 3 Это немного улучшает выход. for symbol: String in NSThread.callStackSymbols() { NSLog("%@", symbol) }
Ответ 4 Здесь большой класс полезности, который я нашел на github: https://github.com/nurun/swiftcallstacktrace Вы получаете кортеж (класс, метод) любого символа трассировки стека, чтобы вы могли сделать чистую распечатку. CallStackAnalyser.classAndMethodForStackSymbol(NSThread.callStackSymbols()[2])