2011-12-07 18 views
6

Quando eseguo il codice utilizzando la parola chiave @autorelease su iOS 4.3.x, questo errore viene generato.Quale versione iOS è richiesta per utilizzare @autoreleasepool?

dyld: lazy symbol binding failed: Symbol not found: _objc_autoreleasePoolPush 
    Referenced from: /Users/Eonil/Library/Application Support/iPhone Simulator/4.3.2/Applications/3782382E-293A-4D5E-86E6-28BE35CF6048/EonilCocoaComplementsTester.app/EonilCocoaComplementsTester 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation 

dyld: Symbol not found: _objc_autoreleasePoolPush 
    Referenced from: /Users/Eonil/Library/Application Support/iPhone Simulator/4.3.2/Applications/3782382E-293A-4D5E-86E6-28BE35CF6048/EonilCocoaComplementsTester.app/EonilCocoaComplementsTester 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation 

Ho pensato che la parola chiave fosse solo la sostituzione di una creazione/eliminazione esplicita del pool di autorelease. Ad ogni modo non lo era, e ha generato un errore. È supportato solo nella versione specifica di iOS? Quindi, dove posso controllare le informazioni sulla versione di questa parola chiave?

+1

questo potrebbe essere utile http://stackoverflow.com/questions/8069570/autoreleasepool-make-errors – RolandasR

risposta

4

Ti riferisci a @autoreleasepool?

È possibile utilizzare @autoreleasepool in un'app con target di build di iOS 4.3.x se si utilizza Xcode 4.2 e iOS 5 SDK. Nonostante lo transitioning to ARC guidelines affermi che "ARC introduce un costrutto statement alla grammatica Objective-C" in @autoreleasepool, che potrebbe suggerire che ARC è richiesto, prosegue affermando che "Questa sintassi è disponibile in tutte le modalità Objective-C."

Anche se non penso che sia una documentazione particolarmente chiara, ciò significa che è possibile utilizzare la sintassi @autoreleasepool sia con che senza ARC-se si utilizza l'SDK iOS 5.

+0

@autoreleasepool non richiede ARC. vedere .. http://stackoverflow.com/q/7950583/927947 – NJones

+0

Ah interessante, ho aggiornato la mia risposta per correggere questo e per evidenziare le parti chiave della documentazione collegata che in prima lettura potrebbe essere male interpretata ... come ho fatto io . :) –

3

appena testato @autoreleasepool {} su iPhone di prima generazione in esecuzione iOS3.0 - funziona senza problemi

+0

È vero, ho appena provato sul mio iPhone 3G iOS 3.1.3, nessun problema – JomanJi

3

sembra essere un bug nel simulatore.

L'impostazione dell'obiettivo di distribuzione su 4.2 anziché su 4.2.1 ha funzionato correttamente.

enter image description here

+0

Ho avuto lo stesso identico problema e questo lo ha risolto anche per me – wasabi

+0

questo ha funzionato per me. +1 per quello :) – pahan

Problemi correlati