Is There a Swift Alternative For Nslog(@"%S", _Pretty_Function_)

Is there a Swift alternative for NSLog(@%s, __PRETTY_FUNCTION__)

Swift has #file, #function, #line and #column. From Swift Programming Language:

#file - String - The name of the file in which it appears.

#line - Int - The line number on which it appears.

#column - Int - The column number in which it begins.

#function - String - The name of the declaration in which it appears.

What is the replacement of __PRETTY_FUNCTION__ in Swift?

In Swift, use "\(#function)" to replace __PRETTY_FUNCTION__

Using os_log to log function arguments, or other dynamic data

See Logging:

Formatting Log Messages

To format a log message, use a standard NSString or printf format string, ...

and String Format Specifiers for the standard format string specifiers, such as %@ and %d.

In your case:

os_log("foo: %@ %@", log: .default, type: .debug, x, y.description)

The format string is restricted to static strings to prevent
(unintentional) expansion of format string specifiers. Here is an example demonstrating the
problem, using NSLog() because that does not restrict the format
to constant strings:

let s = "50%"
NSLog("\(s)percent")
// Output: 500x0ercent

The %p expects a pointer on the variable argument list, which is
not provided. This is undefined behavior, it can lead to crashes
or unexpected output.

NSLog on devices in iOS 10 / Xcode 8 seems to truncate? Why?

A temporary solution, just redefine all NSLOG to printf in a global header file.

#define NSLog(FORMAT, ...) printf("%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);


Related Topics



Leave a reply



Submit