2011-12-07 18 views
6

Ricevo tutti i tipi di errori di compilazione con l'SDK di Facebook perché la mia app utilizza ARC. Cerco di rimuovere i file di Facebook dal compilatore per evitare questo, ma ottengo un errore di Apple Mach-O quando rimuovo il file di Facebook.m. Se lo rimetto nelle fonti di compilazione, ottengo gli errori ARC.SDK iPhone ARC e Facebook

Qualcuno si imbatte in questo?

+0

Come hai superato questo problema? ho provato ad aggiungere -fno-objc-arc ma finisco comunque per avere un errore http://stackoverflow.com/questions/8701780/using-non-arc-code-in-an-arc-enabled-project-adding-facebook – Illep

risposta

9

Li escludete dall'arco con la bandiera del compilatore -fno-objc-arc ? Si può vedere una risposta here

5

e questo è il motivo per cui la distribuzione di una libreria condivisa copiando e incollando i file è male. Una libreria dovrebbe essere distribuita in quanto i propri progetti Xcode con un target di libreria statico, in modo che i requisiti di impostazione dei progetti e le librerie che si utilizzano non possano rovinare l'uno o l'altro.

un bug per il Facebook SDK qui: https://github.com/facebook/facebook-ios-sdk/issues

E nel frattempo aggiungere la bandiera -fno-objc-arc ai file di implementazione del Facebook SDK. Puoi farlo da;

  1. Selezionare la destinazione dell'applicazione
  2. Vai agli fasi di creazione scheda
  3. Aggiungi per ogni file sotto la compilazione Fonti sezione .
+0

questo è molto per-eaching. se selezioni più file e premi invio, puoi impostare -fno-objc-arc su tutti in una volta. –

0

ci sono in realtà pochissime modifiche necessarie per rendere il sdk di Facebook iOS compatibile con ARC. Ho apportato le modifiche al mio codice, ma non so chi inviarlo alla comunità, eventuali suggerimenti?

ecco un post che ho fatto per spiegare come usarlo con ARC il modo più semplice in Xcode 4.2: http://nabtech.wordpress.com/2012/02/02/facebook-ios-sdk-and-arc/

+0

È possibile che tu mi invii una e-mail con la tua versione del sdk di Facebook per iOS, sono bloccato da un problema simile per giorni. [email protected] – Illep

+1

In realtà ho trovato un altro modo che ho postato qui. quando si include il sdk, includerlo con il file di progetto ma non selezionare aggiungi alla destinazione. poi su di te progetto aggiungi il sdk come libreria statica. in questo modo puoi compilare sdk senza ARC ma il tuo codice senza problemi. – nabulaer

2

Il nuovo SDK non supporta esplicitamente ARC, fuori dalla scatola, ma c'è uno scrip shell per creare una libreria statica che può essere utilizzata all'interno del progetto ARC. Basta navigare sul repo git locale e gestita

% ~/facebook-ios-sdk/scripts/build_facebook_ios_sdk_static_lib.sh 

questo creerà la libreria statica nella cartella/lib/facebook-ios-sdk (ad esempio ~/facebook-ios-sdk/lib/facebook-ios-sdk). È quindi possibile trascinare la cartella facebook-ios-sdk nel progetto Xcode dell'app per includere la libreria statica di iOS SDK per iOS.

+0

Supporting ARC è descritto sulla pagina SDK di Facebook: http://developers.facebook.com/docs/mobile/ios/build/ – djskinner