Действительно ли ARC поддерживается в iOS 4? В iOS 4.2 SDK отсутствуют символы, связанные с ARC, во время связывания

Я читал и слышал с тех пор, как ARC было впервые объявлено, что это была вещь во время компиляции и будет обратно совместима с iOS 4. Я успешно реорганизовал свой проект, чтобы ARC использует автоматический рефакторинг Xcode 4.2 и при компиляции с SDK iOS 5.0 работает нормально. Однако, если я пытаюсь скомпилировать против моего iOS 4.2 SDK, она не во время компоновки, отсутствуют следующие символы:

  • _objc_retainAutoreleaseReturnValue
  • _objc_autoreleaseReturnValue
  • _objc_storeStrong
  • _objc_retain
  • _objc_release
  • _objc_retainAutoreleasedReturnValue

Я проверил, и эти символы присутствуют в 5.0, но не в 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* ...]

Означает ли это, что Apple солгала? Вместо этого я предполагаю, что я сбит с толку и делаю что-то не так, но не могу понять, что именно.

Это относится к выпуску GM Xcode 4.2 (сборка 4C199)

32
задан Doug McBride 12 October 2011 в 23:30
поделиться