Frage


Einige Hintergrund - ich habe ein benutzerdefiniertes Framework mit Diney's Guide bei erstellt http://db-in.com/blog/2011/07/universal-framework-iphone-ios-2-0/

Es wurde sowohl für ARMV6 / ARMV7 gebaut, ein ARC-basiertes Rahmen, zusammengestellt mit einem Depolyment-Ziel von 4,3.

Wenn ich das resultierende Framework in ein 5.0-Projekt einfügt, funktioniert es großartig, aber wenn ich es in ein 4.3-Projekt einfügt (ARC oder Nicht-Bogen, spielt keine Rolle), bekomme ich das folgende, was ich nicht wirklich verstehen kann ...

Ich habe auch versucht, Libarclite hinzuzufügen. A manuell, aber es hat nichts geändert.

LD: Duplikates Symbol _objc_retainedObject in /Users/freak4pc/project/myframework.framework/myframework und /developer/platforms/iphoneos.platform/developer/usr/liB/arc/libarclite.iphoneos.A(ArcLit.o) für Architekturen adveloter/Develophone.Anos.A(bildung /Platforms/iphoneos.platform/developer/usr/bin/clang fehlgeschlagen mit dem Ausgangscode 1 fehlgeschlagen

Würde sich jede Hilfe dazu freuen.
Vielen Dank
Shai

War es hilfreich?

Lösung

Ich kämpfe mit dem gleichen Problem. Die Problemumgehung ist so festgelegt, dass das Bereitstellungsziel Ihres Frameworks auf iOS5 festgelegt ist (prüfen Sie, ob dies jedoch keine anderen Probleme aufweist).

Dann Sie muss Verwenden Sie ARC im Master -Projekt, wenn sich Libarclite an sonst fehlt. Meine Lösung besteht darin, zwei Frameworks zu liefern, je nachdem, ob sie ARC verwenden oder nicht.

Hier sind zwei Links zu Apples Dev -Forum mit ein bisschen mehr Informationen:https://devforums.apple.com/message/53934#539344

https://devforums.apple.com/message/588316#588316

Update: Es gibt einen besseren Weg. Erstellen Sie einfach Ihre statische Bibliothek mit iOS5 -Mindestziel und add /developer/platforms/iphoneos.platform/developer/usr/lib/arc/libarclite_iphoneos.a (und /developer/usr/libr/arc/libarclite_iphoneator.a), wenn Sie Ihre Projekt ist nicht Verwenden von ARC und benötigt iOS4-Support.

UPDATE 2: Verwenden Sie eigentlich einfach das Linker flag -fobjc -arc; Dies verknüpft Libarclite mit der Bibliothek, wenn sie noch nicht da ist. Beste Lösung.

Andere Tipps

Wow das war eine harte Fahrt, aber ich habe es endlich gelöst!

Was die endgültige Idee auslöste, war @Stepete's Kommentar, es ist eine Art komplexe Situation, also werde ich versuchen, sie für alle zu erklären, die möglicherweise auch dieses Problem überschritten haben.

  1. Durch das Kompilieren eines Lichtbogen-fähigen Frameworks auf iOS 4.3 wird Libarclite automatisch an die "Bridge" 4.3-Bogen mit 5.0 Bogen angebracht. Als dieses Framework in ein 4,3 -Projekt importiert wurde, wurde Arclite tatsächlich zweimal verknüpft - einmal für das Framework (mit 4.3) und einmal für das Projekt selbst -, was den Fehler "doppelter Symbol" verursachte, dh das Framework muss kompiliert werden 5.0, und das Projekt kann 4.3 sein. Aber dann ;
  2. Mein Framework verwendet @Mattts AFNetworking, um HTTP -Anforderungen und JSON -Parsen verschiedener APIs durchzuführen. AFNetworking überprüft automatisch beim Kompilieren, wenn Ihr Ziel iOS5 ist, und wenn dies der Fall ist, wird es verwendet NSJSONSerialization, sonst würde es auf jede importierte JSON -Bibliothek zurückfallen, z. B. JSONKit.
  3. Beim Kompilieren meines AFNetworking-fähigen Frameworks für iOS5 (um Problem Nr. 1 zu vermeiden), wird automatisch angeschlossen NSJSONSerialization, was eine Ausnahme zu 4.3 Projekten verursacht, was bedeutet, dass Sie manuell nach den Kompilieranweisungen suchen und die Anrufe entfernen müssen NSJSONSerialization Vor dem Kompilieren würde es automatisch auf die 4,3-kompatible Bibliothek zurückgreifen (in meinem Fall JSONKit). Diese Kompilierungsbedingung findet sich unter afhttpclient.m und afjsonRequestoperation.m (z. B. #if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_4_3 || __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_6)
  4. Nachdem ich diese Bedingungen entfernt hatte, habe ich meinen Rahmen für iOS5 erfolgreich mit JSONKIT anstelle von NSJsonSonialization zusammengestellt und konnte sie erfolgreich in meinem iOS4.3 -Projekt verwenden.

Ich hoffe, das würde jedem anderen helfen, der ein paar Tage wie ich damit kämpfen könnte :)

Shai.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top