2012-08-09 32 views
6

Xcode 4.4, compilador Mountain Lion, llvm 4.0. Construyo mi aplicación, que funciona en IOS5, dispositivos iOS6, pero en el iPhone 3G con iOS 4.2 tengo dicho error:Xcode 4.4, aplicación de compilación con ARC para iOS 4.2

dyld: lazy symbol binding failed: Symbol not found: _objc_storeStrong 
Referenced from: /var/mobile/Applications/68B78A19-71E6-4BDA-B997-B7DED4D02429/iGuides.app/iGuides 
Expected in: /usr/lib/libobjc.A.dylib 

dyld: Symbol not found: _objc_storeStrong 
Referenced from: /var/mobile/Applications/68B78A19-71E6-4BDA-B997-B7DED4D02429/iGuides.app/iGuides 
Expected in: /usr/lib/libobjc.A.dylib 

En Xcode 4.3 Todo estaba funcionando, porque uso sólo modificadores fuertes y unsafe_unretained.

Veo que no se han vinculado libs de arco a mi aplicación.

Estaba intentando vincular manualmente con libarclite_iphoneos.a, sin reacción. Agregué -fobj-arc para enlazar banderas, sin reacción.

Pensé que la compatibilidad con iPhone 3g se eliminará en XCode 4.5, no 4.4. ¿Es tan?

+0

Puedo confirmar que la versión 4.4.1 (4F1003) de Xcode que se ejecuta en Mountain Lion PUEDE construir e implementar un proyecto usando ARC (menos 'weak's) en un iPod touch de segunda generación que ejecuta iOS 4.2.1. – NJones

+0

El mismo problema aquí, todavía no he encontrado una solución ... – Andrea

+1

Andrea, si está usando iVersion o iRate, entonces necesita actualizar a las últimas versiones. Xcode 4.4 introdujo un error que he tenido que solucionar por el cual ARC no se inicializa correctamente cuando se llama al método de carga + (vacío) de una clase. –

Respuesta

3

Acabo de encontrar un problema. El error se debió a la biblioteca iRate, cuando elimino la referencia a esta lib, todo comienza a funcionar.

Upd: después de actualizar a la última versión, todo funciona bien. Gracias @Nick Lockwood para una explicación: en iOS arlite lib cargas después de [carga de clase] métodos ejecutados. Entonces necesita retrasar la inicialización. En iRate insertó performOnTheMainThread en el método de carga.

+0

Esto se solucionó en la última versión: ¿intentó actualizar? –

+0

sí, claro, después de la actualización todo funciona, ¡gracias! Respuesta actualizada –

+0

@NickLockwood ¿tiene un enlace a su explicación aquí? Estaría muy interesado en leerlo ya que estoy viendo un problema similar :) –

1

Intente agregar -fobjc-arc en Otros indicadores de enlazador.

+0

Gracias por su respuesta, tengo un proyecto de arco con algunas bibliotecas estáticas no-arc vinculadas. Si agrego el marcador de enlace -fobjc-arc a mi proyecto, no ocurre nada, si agrego este indicador al proyecto de bibliotecas estáticas: recibo un error ("carácter de opción desconocido' f 'en: -fobjc-arc "), como en [comentarios ] (http://stackoverflow.com/questions/8756418/static-library-with-arc-support-linked-to-non-arc-project-causing-linker-errors) –

+0

Agregue la marca solo al archivo que tiene el método de carga + (vacío) (desde los pasos de compilación> Compilar) – Rivera

Cuestiones relacionadas