title: Are @synchronized blocks guaranteed to release their locks?
body: <p>Assume these are instance methods and <code>-run</code> is called. </p>
  
  <p>Is the lock on <code>self</code> released by the time <code>-run</code> returns?</p>
  
  <pre><code>...
  - (void)dangerous {
      @synchronized (self) {
          [NSException raise:@"foo" format:@"bar"];
      }
  }
  
  - (void)run {
      @try { [self dangerous]; }
      @catch (NSException *ignored) {}
  }
  ...
  </code></pre>