Search code examples
iosswiftios8grand-central-dispatchdispatch-async

Passing an argument to dispatch_async


I'm new to Swift and looking at how the dispatch_async function works. The API doc shows dispatch_async having two parameters. However, I'm able to pass in one argument and it's okay.

dispatch_async(dispatch_get_main_queue()) { 

}

How come I don't need to pass in two arguments?

Thank you,

API Doc:

enter image description here


Solution

  • It is a trailing closure syntax

    func someFunctionThatTakesAClosure(closure: () -> ()) {
        // function body goes here
    }
    
    // here's how you call this function without using a trailing closure:
    
    someFunctionThatTakesAClosure({
        // closure's body goes here
    })
    
    // here's how you call this function with a trailing closure instead:
    
    someFunctionThatTakesAClosure() {
        // trailing closure's body goes here
    }
    

    https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html