2012-04-23 30 views
6

Estoy almacenando mis bloques mientras mi servicio web se apaga y habla con mi servidor. Por lo tanto, estoy usando [myBlock copy] para mantener una referencia a mi bloque.Cómo liberar un bloque

Una vez que tengo mis datos y ejecuto el bloque, ¿llamo al [myBlock release], o uso Block_release(myBlock)? Puedo encontrar referencia a ambos.

+0

, no tienen ninguna diferencia –

Respuesta

9

Block_release() está disponible cuando solo está utilizando bloques en C y no en Objective-C.

Al usar Objective-C puede usar los métodos release y copy para hacer que su código se vea y se sienta más como el resto del ObjC que lo rodea.

Imagino que ambos hacen exactamente lo mismo, y que el método objc es simplemente un envoltorio alrededor de la llamada al Block_release() de todos modos.

5

Como it's explained in reference La suma de la copia/liberación debe ser igual a cero. Entonces, si usa Objective-C puede llamar al [block copy] y por lo tanto a [block release].

Si está utilizando C, deberá usar Block_copy() y Block_release().

Como Jasarien escribió, probablemente estén haciendo lo mismo, por lo que puede usarlos de forma intercambiable. Sin embargo, es importante mantener la convención coherente, por lo tanto, cuando use [block copy], preferiría usar [block release] que Block_release()

Cuestiones relacionadas