2010-07-19 5 views
4

Est-il possible d'avoir un code spécifique iOS4 (c.-à-d. Les superpositions MKMapView) dans une application, construire en utilisant 4.0, définir la cible de déploiement à 3.0 et continuer à fonctionner tant que le code iOS4 n'est pas t appelé sur un appareil 3.x?Code iOS4 sur les appareils iOS3

J'essaye de faire cela maintenant, et appelant seulement le code iOS4 si le périphérique le soutient, mais je ne peux pas le faire installer. GDB est terrifié. Voici ce que je reçois quand je construis un dispositif iOS3:

dyld: Symbol not found: _OBJC_CLASS_$_MKOverlayView 
Referenced from: /var/mobile/Applications/1EE8EC13-FA01-43CB-A617-9B5D268ECD13/maps.app/maps 
Expected in: /System/Library/Frameworks/MapKit.framework/MapKit 

Data Formatters temporarily unavailable, will re-try after a 'continue'. (Not safe to call dlopen at this time.) 
mi_cmd_stack_list_frames: Not enough frames in stack. 
mi_cmd_stack_list_frames: Not enough frames in stack. 

Je veux que cette application fonctionne sur 3.0 et, et utiliser la nouvelle superposition MKMapView sur 4.0 appareils.

Plus précisément, je suis le code de mise en œuvre de superposition d'image en mosaïque démontré à la WWDC, qui utilise une coutume TileOverlay qui implémente le protocole MKOverlay, et une coutume TileOverlayView qui est une sous-classe de MKOverlayView.

Répondre

1

Essayez de lier l'infrastructure MapKit en mode faible.

+0

Cela a obtenu. À votre santé. –

2

Vous devez construire avec le SDK de base défini sur 4.0 et la cible de déploiement définie sur 3.0. Puis, en essayant d'utiliser une classe qui n'existe que dans 4.0, utilisez NSClassFromString ("MKOverlayView") ou quoi que ce soit. Cela reviendra à zéro si la classe n'existe pas.

Ce poste de Matt Gallagher a des conseils plus détaillés pour ce genre de situation:

http://cocoawithlove.com/2010/07/tips-tricks-for-conditional-ios3-ios32.html

Questions connexes