¡Arriba! Error de ARC: 'CFTypeRef' (también conocido como 'const void *') a 'NSNumber *' no está permitido

Estoy tratando de convertir un código de Apple (de SquareCam ejemplo) a ARC. Tenía el código de Apple marcado para compilar como no ARC y funcionó, pero recibí errores de bloqueo al pasar imágenes entre el contexto no ARC a un contexto ARC, así que estoy tratando de resolver eso.

De todos modos, creo que tengo todas las cosas de ARC manejadas excepto por esta línea:

 NSNumber *orientation = CMGetAttachment(imageDataSampleBuffer, kCGImagePropertyOrientation, NULL);

Esto se usa para el CIDetectorImageOrientation valor clave (detección de rostros de CoreImage). Recibo el error ARC a continuación para esto y ninguna de las cosas que he probado resuelve esto. "imageDataSampleBuffer" es de tipo CMSampleBufferRef.

¿Cuál es la forma correcta de convertir el CFTypeRef al NSNumber que necesito? - ¡Gracias!

La conversión implícita de un tipo de puntero que no sea de Objective-C 'CFTypeRef' (también conocido como 'const void *') a 'NSNumber *' no está permitida con ARC

preguntado el 03 de mayo de 12 a las 22:05

1 Respuestas

Debido a que está asignando un CFTypeRef a un NSObject*, el compilador se queja. Necesitas hacer un __bridge a un NSNumber.

contestado el 04 de mayo de 12 a las 01:05

¡Gracias! solía __bridge ya que no quiero transferir la propiedad y eso parece funcionar. Por lo general, el compilador grazna y ofrece __bridge opciones, pero no con el problema que estaba teniendo. - primavera

¡Absolutamente! Sin embargo, me preocupa el recuento de retención del objeto CF... Si falla, use CFRetain() en ese CMGetAttachment. - CodaFi

__bridge_transfer Está Mal. La regla get dice que el objeto no es propiedad de la persona que llama, por lo que no puede transferir la propiedad a ARC. - Nikolái Ruhe

@CodaFi No hay problema de propiedad con el uso (__bridge NSNumber*). no te dejes caer CFRetain Llama sin saber por qué. - Nikolái Ruhe

¿No sería bueno si estos detalles importantes se recopilaran en un wiki en lugar de quedar algo huérfanos en los comentarios? - primavera

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.