ARCがコンパイル時のものであり、iOS 4との下位互換性があると最初に発表されて以来、私は読んだり聞いたりしました。Xcode4.2の自動リファクタリングを使用して、プロジェクトをARCに正常にリファクタリングしました。 iOS 5.0 SDK、正常に動作します。ただし、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が嘘をついたことを意味しますか?代わりに、私は混乱して何か間違ったことをしていると思いますが、何がわからないのです。
これは、Xcode 4.2(ビルド4C199)のGMリリースによるものです。