objective-c ios7 crash 64bit arm64

objective c - Obj_msgEnlace de puntero de función cuando se construye con 64 bits arm64



objective-c ios7 (1)

Finalmente, puedo reproducir el bloqueo en este momento. Simplemente edite Build Scheme y cambie "Ejecutar YOURAPPNAME.app" de Debug a Release.

Y justo después de que pueda reproducir este error, sé cómo solucionarlo. Como mi tipo de función de selector es nulo (no devuelve nada), no debería simplemente copiar lo que hace la pregunta (usando "id").

Cambiando:

id (*response)(id, SEL, id) = (id (*)(id, SEL, id)) objc_msgSend; response(self.target, self.successAction, category);

A:

void (*response)(id, SEL, id) = (void (*)(id, SEL, id)) objc_msgSend; response(self.target, self.successAction, category);

Lo arregla! O un código de una línea gracias a este compromiso en github :

((void(*)(id, SEL, id))objc_msgSend)(self.target, self.successAction, category);

En realidad, mi código original funciona muy bien con Xcode 5.0.2 y también es excelente para enviar a App Store, que es:

objc_msgSend(self.target, self.successAction, category);

Esta línea causa bloqueos con Xcode5.1 beta5. Encontré una solución para solucionar el problema: la versión de SudzC ARC - objc_msgEnviar una llamada provoca EXC_BAD_ACCESS utilizando una arquitectura de 64 bits

// solution id (*response)(id, SEL, id) = (id (*)(id, SEL, id)) objc_msgSend; response(self.target, self.successAction, category);

Y no tengo ningún problema en usar Xcode 5 o Xcode5.1beta para probar en dispositivos (iPhone 5s) o simulador (32 bits o 64 bits) cuando uso la solución recomendada. La configuración de arquitecturas en Configuración de compilación es "Arquitecturas estándar (armv7, armv7s)" en Xcode 5 y "Arquitecturas estándar (armv7, armv7s, arm64)".

Sin embargo, mi nueva versión de la aplicación ya está lista para su venta en la App Store. Y se bloquea en todos los dispositivos (iPhone 5s, 5, 4s) instalados (según el informe de Crashlytics). Dado que no obtengo el bloqueo con Xcode (compilación en un dispositivo real), no sé si soluciono el problema o no antes de que Apple lo revise.