Returning from method inside a @synchronized block

ios, multithreading, objective-c

Solution

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

Problem

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.

Original source