Si declaro un bloque como este ^{ DoSomething; }
y lo pongo en una variable de instancia, ¿necesito Block_copy()
si voy a mantenerlo?¿Los bloques Objective-C se liberan automáticamente?
Respuesta
Sí, necesita copiar. No porque se publiquen de forma automática, sino porque comienzan en la pila. Tenga en cuenta que los bloques también se comportan como objetos normales de Objective-C, por lo que se puede copiar utilizando la copy
mensaje normal:
void storeBlockForLater: (dispatch_block_t) block
{
[someArray addObject:[[block copy] autorelease]];
}
O, si usted tiene una propiedad de bloque:
@property(copy) dispatch_block_t block;
de retención no lo hace ayuda aquí
Gracias, también encontré este excelente artículo sobre el tema: http://cocoawithlove.com/2009 /10/how-blocks-are-implemented-and.html – brian
Sí; y si usa 'copy', use' release'. Si usa 'Block_copy()', use 'Block_release()'. No los mezcles. – bbum
@bbum ¿Es seguro usar 'Block_copy()' y 'autorelease'? ¿Debería usar 'autorelease' con' copy'? –
- 1. Bloques ObjectiveC equivalente en Java
- 2. Los campos marcados con C# ThreadStaticAttribute se liberan automáticamente cuando se corta el hilo?
- 3. En ARC, ¿se copian automáticamente los bloques cuando se asignan a un ivar directamente?
- 4. ¿Cómo se implementan los bloques try/catch?
- 5. Las WeakReferences no se liberan en el SO integrado
- 6. En ARC, ¿se copian automáticamente los bloques cuando se asignan a un ivar a través de la propiedad?
- 7. Generar bloques de Java Externalizable readExternal()/writeExternal() automáticamente
- 8. objectivec: fb publicar comentario error
- 9. ¿Cómo agregar automáticamente "final" a los bloques de código ruby en vim?
- 10. ObjectiveC Parse Integer from String
- 11. ¿Cómo se leen los bloques de comentarios en PHP?
- 12. ¿Cómo se revisan los bloques grandes del nuevo código
- 13. ¿Dónde se almacenan los bloques CMS estáticos de Magento?
- 14. Espere a que se completen los bloques de assetForURL
- 15. Hacer que los bloques de iOS se ejecuten sincrónicamente
- 16. instancias de ImageIO initImageJPEG que se asignan y nunca se liberan
- 17. Contraer todos los bloques de preprocesador inactivo en Visual Studio
- 18. ¿Inspeccionar los bloques GCD en cola?
- 19. Variables globales en manubrios si los bloques
- 20. Uso correcto de los bloques iteradores
- 21. ¿Beneficios de los bloques de scoping?
- 22. ¿Cómo funcionan los 'bloques' de Clang?
- 23. ¿Hay un puntero SELF para los bloques?
- 24. Probar/atrapar bloques dentro de los constructores
- 25. ámbito variable en los bloques de instrucciones
- 26. ¿La mejor explicación de los bloques Ruby?
- 27. Pros y contras del uso de excepción en IOS/ObjectiveC
- 28. cuando/qué bloqueos se mantienen/liberan en el nivel de aislamiento READ COMMITTED
- 29. ¿Cómo se diferencian los bloques de los métodos y funciones normales en Objective-C?
- 30. ¿Los archivos de la carpeta temporal se eliminan automáticamente?
Nota ... para ARC, un código de ejemplo está aquí: http://stackoverflow.com/a/20760583/294884 – Fattie