transferir scan por pasar how funciona fotos datos contactos como code iphone objective-c weak-linking

scan - La vinculación débil en el iPhone se niega a funcionar



transferir datos de android a iphone (2)

Tengo una aplicación para iPhone dirigida principalmente a 3.0, pero que aprovecha las API más nuevas cuando están disponibles. El código va algo como esto:

if (UIApplicationDidEnterBackgroundNotification != NULL) { [nc addObserver: self selector: @selector(irrelevantCallbackName:) name: UIApplicationDidEnterBackgroundNotification object: nil]; }

Ahora, de acuerdo con todo lo que Apple ha dicho, si las API relevantes están débilmente vinculadas, eso funcionará bien porque el enlazador dinámico evaluará UIApplicationDidEnterBackgroundNotification a NULL . Excepto que no lo hace. La aplicación compila, pero tan pronto como golpea if (UIApplicationDidEnterBackgroundNotification != NULL) se bloquea con EXC_BAD_ACCESS .

¿Es esto simplemente una cuestión de un indicador de compilador que necesito establecer? ¿O voy por esto de la manera incorrecta?


Aa y yo lo descubrí. Para los símbolos que no son funciones ( extern const int foobar , por ejemplo), tiene que comparar con la dirección del símbolo, no el símbolo en sí mismo, por lo que:

if (&UIApplicationWillEnterForegroundNotification != NULL) etc;

Lo cual, en retrospectiva, es algo obvio, pero todavía reprocho a todo el universo que me rodea por no mencionar nunca la distinción.


Esto es lo que tuve que hacer al buscar una constante de marco externo.

const CLLocationAccuracy * ptr = &kCLLocationAccuracyBestForNavigation; BOOL frameworkSupports = (ptr != NULL); if (frameworkSupports) { return kCLLocationAccuracyBestForNavigation; } else { return kCLLocationAccuracyBest; }

No funcionaría sin la variable ptr.