2011-10-14 19 views
15

He convertido mi proyecto a iOS 5 y habilitado ARC. Ahora necesito integrar la trama central con el proyecto. Cuando trato de crear una instancia de un controlador de ejemplo incluido con la trama núcleo, consigo unos 20 errores de la siguiente manera:iPhone 4 iOS5 Core Plot y error ARC: "El destino actual de despliegue no admite referencias débiles"

The current deployment target does not support automated __weak references

he dicho explícitamente fno-objc-arc junto al nombre del controlador en la configuración de generación.

¿Qué más necesito para ejecutar la trama central con ARC habilitado?

¡Gracias!

Respuesta

42

__weak referencias solo funcionan en iOS 5 y superior. Si tiene el destino de despliegue establecido en algo anterior, obtendrá el error. Básicamente, si desea implementar dispositivos anteriores, no puede usar referencias automáticas __weak. El sustituto sería __unsafe_unretained

+0

Gracias, cambiando el destino de despliegue a 5.0 trabajado! –

+0

necesito mantener el objetivo de despliegue en 4.2. ¿Hay alguna forma de evitarlo? – Pavan

+2

Use __unsafe_unretained en lugar de __weak. Tenga en cuenta que pierde un poco de funcionalidad ARC en este caso. – FeifanZ

6

Si bien la respuesta de Inspire48 cubre ampliamente el hecho de que __weak referencias no son compatibles con versiones de iOS anterior a la 5.0, este problema en particular se debió a las cabeceras del núcleo trama no está hecho completamente compatibles ARC.

Esto se arregló en el repositorio de Mercurial hace unos meses, por lo tanto, si desea utilizar la Trama principal dentro de un proyecto habilitado para ARC, necesita obtener el último código del repositorio. La instantánea 0.9 no interactúa bien con ARC debido a elementos como este en sus encabezados.

El código del marco de ploteos centrales en el repositorio también admite la orientación a iOS 4.0 y Snow Leopard con ARC habilitado en su aplicación (creo 3.0 y Leopard sin ARC, también), por lo que no necesita apuntar a 5.0 para usar ARC con Core Plot.

0

Change Development Targert 6.0.

Seleccione su proyecto> objetivo> objetivo de desarrollo> cambie a 6.0

Cuestiones relacionadas