2010-12-27 19 views
24

¿Alguien puede decirme si está bien que regrese desde el interior de un bloque @synchronized?return from inside a @synchronized block in objective-c

Por ejemplo:

- (id)methodThatReturnsSomething:(BOOL)bDoIt 
    { 
     @synchronized(self) {  

      if(!bDoIt) return nil; 
      ... 
     } 
    } 

o debería desbloquear el bloque primero (usando NSLock su lugar)?

+0

Posible duplicado de [Retorno del método dentro de un bloque @synchronized] (http://stackoverflow.com/questions/2704400/returning-from-method-inside-a-synchronized-block) –

Respuesta

28

eliminará automáticamente su contexto de manejo de excepciones cuando regrese y abandonará el bloqueo. Entonces el código que has escrito está bien.

+0

¡Lo arreglé! ¡Gracias por su respuesta! – Vassilis

+6

+1 Vale la pena mencionar que esto es más o menos * por lo que * '@ synchronized' existe - te alivia tener que abandonar manualmente tus propios bloqueos (que pueden ser bastante parecidos a los espaguetis con múltiples rutas de código). –

+2

La respuesta con 27 votos de un usuario que ya no existe es agradable, pero sería bueno tener los enlaces a algunas fuentes autorizadas. –

Cuestiones relacionadas