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!
InformationsquelleAutor Doug McBride | 2011-10-12