2012-08-09 7 views
6

Xcode 4.4, Mountain Lion, Llvm 4.0 Compiler. Ich baue meine app, es funktioniert auf ios5, iOS6 Geräte, aber auf iphone 3g mit ios 4.2 ich solche Fehler haben:Xcode 4.4, Build-App mit ARC für iOS 4.2

dyld: lazy symbol binding failed: Symbol not found: _objc_storeStrong 
Referenced from: /var/mobile/Applications/68B78A19-71E6-4BDA-B997-B7DED4D02429/iGuides.app/iGuides 
Expected in: /usr/lib/libobjc.A.dylib 

dyld: Symbol not found: _objc_storeStrong 
Referenced from: /var/mobile/Applications/68B78A19-71E6-4BDA-B997-B7DED4D02429/iGuides.app/iGuides 
Expected in: /usr/lib/libobjc.A.dylib 

Auf Xcode 4.3 alles funktionierte, weil ich nur stark und unsafe_unretained Modifikatoren verwenden.

Ich sehe, dass keine Arc-Bibliotheken mit meiner App verknüpft wurden.

Ich habe versucht, manuell mit libarclite_iphoneos.a, keine Reaktion zu verknüpfen. Ich habe -fobj-arc hinzugefügt, um Flags zu verknüpfen, keine Reaktion.

Ich dachte, dass iPhone 3g Unterstützung in XCode 4.5, nicht 4.4 fallen gelassen wird. Ist es so?

+0

Ich kann bestätigen, dass Xcode Version 4.4.1 (4F1003) auf Mountain Lion läuft und ein Projekt mit ARC (minus 'weak's) zu einem iPod touch 2. Generation mit iOS 4.2.1 erstellen und bereitstellen kann. – NJones

+0

Das gleiche Problem hier, ich habe noch keine Lösung gefunden ... – Andrea

+1

Andrea, wenn Sie iVersion oder iRate verwenden, dann müssen Sie auf die neuesten Versionen aktualisieren. Xcode 4.4 führte einen Fehler ein, mit dem ich umgehen musste, wobei ARC nicht richtig initialisiert wird, wenn die Methode + (void) load einer Klasse aufgerufen wird. –

Antwort

3

Ich habe gerade ein Problem gefunden. Fehler war wegen iRate Bibliothek, wenn ich Verweis auf diese Lib entfernen, beginnt alles zu arbeiten.

Upd: nach der Aktualisierung auf die letzte Version funktioniert alles gut. Vielen Dank @Nick Lockwood für die Erklärung: auf iOS arclite lib lädt nach [Klasse laden] Methoden ausgeführt. Sie müssen also die Initialisierung verzögern. In iRate hat er PerformOnTheMainThread in load Methode eingefügt.

+0

Dies wurde in der neuesten Version behoben - haben Sie versucht, zu aktualisieren? –

+0

ja, sicher, nach dem Update funktioniert alles, thx! Aktualisierte Antwort –

+0

@NickLockwood hast du hier einen Link zu deiner Erklärung? Ich würde sehr daran interessiert sein, es zu lesen, da ich ein ähnliches Problem sehe :) –

1

Versuchen Sie -fobjc-arc in hinzuzufügen Andere Linker Flags.

+0

Vielen Dank für die Antwort, ich habe Arc-Projekt mit einigen verknüpften No-Arc statische Bibliotheken. Wenn ich das Link-Flag -fobjc-arc zu meinem Projekt hinzufüge, passiert nichts, wenn ich dieses Flag zum statischen Bibliotheken-Projekt hinzufüge: Ich erhalte Fehler ("unbekanntes Optionszeichen' f 'in: -fobjc-arc "), wie in [Kommentare ] (http://stackoverflow.com/questions/8756418/static-library-with-arc-support-linked-to-non-arc-project-causing-linker-errors) –

+0

Fügen Sie das Flag nur der Datei hinzu, die die Methode + (void) load (aus den Schritten Build> Compile) – Rivera