Michael Waterfall
Michael Waterfall

Reputation: 20569

Returning from method inside a @synchronized block

I'd just like to know if it's advised to return from a method within a @synchronized block? For example:

- (id)test {
   @synchronized(self) {
      if (a) return @"A";
      else return @"B";
   }
}

As opposed to:

- (id)test {
   NSString *value;
   @synchronized(self) {
      if (a) value = @"A";
      else value = @"B";
   }
   return value;
}

This sample is rather simplistic, but sometimes in a complex method it would make things simpler to be able to return from within a @synchronized block.

Upvotes: 12

Views: 2884

Answers (1)

kennytm
kennytm

Reputation: 523384

It's fine. @synchronized is aware of the return statement.

(Ref: http://www.thaesofereode.info/clocFAQ/#sync-advs) - dead link
(Ref: http://nextstep.sdf-eu.org/clocFAQ/#sync-advs) - this link reference above dead one and may not be up to date as its header says

Upvotes: 12

Related Questions