Ho letto e ascoltato da quando ARC ha annunciato per la prima volta che si trattava di una cosa in fase di compilazione e sarebbe retrocompatibile con iOS 4. Ho correttamente rifatto il mio progetto ad ARC usando il refactoring automatico di Xcode 4.2, e quando è compilato con l'SDK di iOS 5.0, funziona perfettamente. Tuttavia, se provo a compilare contro i miei iOS 4.2 SDK, non riesce in fase di collegamento, mancano i seguenti simboli:ARC è realmente supportato in iOS 4? L'SDK di iOS 4.2 manca dei simboli relativi all'ARC al tempo di collegamento
- _objc_retainAutoreleaseReturnValue
- _objc_autoreleaseReturnValue
- _objc_storeStrong
- _objc_retain
- _objc_release
- _objc_retainAutoreleasedReturnValue
ho controllato, e questi simboli sono presenti in 5.0, ma non 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* ...]
Significa questo che Apple ha mentito? Suppongo invece di essere confuso e di fare qualcosa di sbagliato, ma non riesco a capire cosa.
Questo è con il rilascio di GM Xcode 4.2 (build 4C199)
Penso che sia necessario iOS 4.3. – ughoavgfhw
Oltre a ciò che altri hanno detto, non installare l'SDK 4.2. Utilizzare l'SDK 5.0. Imposta il tuo obiettivo di distribuzione. Non intendo per questo, intendo in generale; gli SDK meno recenti non dovrebbero essere usati. –
Wow, non posso credere di aver passato così tanto tempo senza sapere che i nuovi SDK potrebbero essere costruiti per versioni del sistema operativo precedenti. Qui sono stato arrabbiato con Apple che stavano cancellando tutte le mie vecchie versioni di SDK:/Grazie! –