Search code examples
iosiphoneswiftnsurlnslog

NSLog crashes with certain NSURL- iOS 9.2


Here is my code,where the crash occurs:-

let URL = NSURL(string: "http://files.parsetfss.com/fa80bc63-88d4-412d-a478-2451cffc92a9/tfss-1d2a321d-b02e-4745-a589-e31536f648df-XXXXX%20CAT15%2030.p0001.jpg")
NSLog("Loading page with URL: \(URL)")

The app crashes with EXC_BAD_ACCESS


Solution

  • The first argument of NSLog() is a format string, and contains format specifiers (starting with %) which are expanded by the following variable argument list. In your case %20C is a format specifier, but no matching argument is supplied. That causes undefined behavior, it can crash or produce incomplete or wrong output.

    If you want to use NSLog() then a general safe method is

    NSLog("%@", "Loading page with URL: \(URL)")
    

    In this particular case,

    NSLog("Loading page with URL: %@", URL)
    

    works as well, since NSURL is a NSObject subclass and can be used with the %@ format.