Est ARC vraiment pris en charge dans iOS 4? L'iOS 4.2 SDK est manquant ARC-symboles liés au temps de lien
J'ai lu et entendu depuis l'ARC a été le premier a annoncé qu'il était au moment de la compilation chose et serait compatible avec iOS 4. Je l'ai refait mon projet à l'ARC à l'aide de Xcode 4.2 automatique de refactoring, et quand compilé avec la version 5.0 d'iOS SDK, il fonctionne très bien. Cependant, si j'essaie de compiler contre mon iOS 4.2 SDK, il échoue au moment de la liaison, manquant les symboles suivants:
- _objc_retainAutoreleaseReturnValue
- _objc_autoreleaseReturnValue
- _objc_storeStrong
- _objc_retain
- _objc_release
- _objc_retainAutoreleasedReturnValue
J'ai vérifié, et ces symboles sont présents dans la version 5.0, mais pas 4.2:
iPhoneOS5.0.sdk/usr/lib $ find . -type f|xargs nm|grep -i _objc_retain$
00005ed0 T _objc_retain
000061d0 T _objc_retain
iPhoneOS4.2.sdk/usr/lib $ find . -type f|xargs nm|grep -i _objc_retain$
[... *crickets* ...]
Est-ce à dire qu'Apple a menti? Je suppose plutôt que je suis confus et faire quelque chose de mal, mais je ne peux pas comprendre ce que.
C'est avec le GM version de Xcode 4.2 (Build 4C199)
- Je pense qu'il nécessite iOS 4.3.
- En plus de ce que les autres ont dit, il ne faut pas installer le 4.2 SDK. Utiliser le SDK 5.0. Définir votre cible de déploiement. Je ne veux pas dire pour cela, je veux dire en général, plus le Sdk ne doit pas être utilisé.
- Wow, je ne peux pas croire que j'ai passé ce long sans savoir que les nouveaux Kits de développement logiciel pourrait construire pour les anciennes versions de systèmes d'exploitation. Ici, j'ai été fou à Apple qu'ils ont été la suppression de toutes mes anciennes versions du SDK :/ Merci!
Vous devez vous connecter pour publier un commentaire.
ARC est pris en charge sur iOS 4.3 et au-dessus. Vous devez utiliser l'iOS 5.x SDK mais pouvez sélectionner l'iOS 4.3 pour la Cible de Déploiement. La seule chose qui n'est pas pris en charge dans les 4.x est automatique référence faible du point zéro.
Voir la documentation d'Apple ici pour l'Objectif-C Indice de Disponibilité.
Xcode 4.4 et 4.5 peut être utilisé pour soumettre des applications.
Noter que NSDictionary et NSArray subscripting déploie retour à OS X 10.6 et iOS 4, assurez-vous de définir la cible de déploiement du dos ainsi.
Un peu de retard, mais c'est une information importante. L'on a accepté la réponse est correcte, Apple états iOS 4.0 et ci-dessus que le minimum du système d'exploitation à l'ARC de soutien.
Cependant, il peut se casser dans quelques situations. L'un d'entre eux est bien sûr le
__weak
mot-clé et de ses dérivés. Vous verrez un message d'erreur semblable à la suivante.Une deuxième et d'une situation très dangereuse quand vous utilisez le
+load
méthode de NSObject. Si vous faites cela, l'aide de l'ARC sur iOS 4.x, vous devrez d'exécution accidents qui sont très difficiles à trouver. Si vous obtenez des erreurs d'exécution comme la suivante, vérifiez votre+load
méthodes. Pour moi, il a travaillé pour définir le -fno-objc-arc drapeau pour ce fichier en particulier.+load
. Nous allons drop iOS 4.3 bientôt, mais je dois fournir un plus de travail de mise à jour pour certaines personnes qui refusent de mise à jour 4.3 de 5 ou 6, gaaaah.