title: Is optional closure always escaping? Should we use [weak self] or [unowned self] on it?
body: <p>Give the following function signature in <code>UICollectionView</code>.</p>
  <pre><code>open func performBatchUpdates(_ updates: (() -&gt; Void)?, completion: ((Bool) -&gt; Void)? = nil)
  </code></pre>
  <p>There are some options over the Internet, that optional closures are always escaping. But, I am really not sure is that true, or this is still debatable.</p>
  <ol>
  <li><a href="https://forums.swift.org/t/allowing-escaping-for-optional-closures-in-method-signature/27556" rel="nofollow noreferrer">https://forums.swift.org/t/allowing-escaping-for-optional-closures-in-method-signature/27556</a></li>
  <li><a href="https://gist.github.com/gringoireDM/1f18f3bb4e74e2d914a748d89486db56" rel="nofollow noreferrer">https://gist.github.com/gringoireDM/1f18f3bb4e74e2d914a748d89486db56</a></li>
  </ol>
  <p>For the above case, do we ever need <code>[weak self]</code>, or <code>[unowned self]</code> in the 1st block, and 2nd black?</p>
  <pre><code>func controllerDidChangeContent(_ controller: NSFetchedResultsController&lt;NSFetchRequestResult&gt;) {
      collectionView!.performBatchUpdates({ () -&gt; Void in
          for operation: BlockOperation in self.blockOperations {
              operation.start()
          }
      }, completion: { (finished) -&gt; Void in
          self.blockOperations.removeAll(keepingCapacity: false)
  
          self.collectionView.reloadData()
      })
  }
  </code></pre>