2011-12-07 78 views
6

由於我的應用程序使用ARC,我正在使用Facebook的SDK獲取各種構建錯誤。我試圖從編譯器中刪除Facebook文件以避免這種情況,但是當我刪除Facebook.m文件時,出現Apple Mach-O錯誤。如果我把它放回到編譯源中,我會遇到ARC錯誤。iPhone ARC&Facebook SDK

有人碰到過這個嗎?

+0

你是如何解決這個問題的?我試圖添加-fno-objc-arc,但我仍然有一個錯誤http://stackoverflow.com/questions/8701780/using-non-arc-code-in-an-arc-enabled-project-adding-facebook – Illep

回答

9

您是否將它們從編譯器標記中刪除? -fno-objc-arc ? 你可以看到一個答案here

5

這就是爲什麼通過複製分發共享庫和粘貼文件是。一個庫應該像它自己的Xcode項目一樣分配一個靜態庫目標,以便項目的構建設置需求和你使用的庫不能搞砸。

文件爲Facebook SDK這裏的錯誤:https://github.com/facebook/facebook-ios-sdk/issues

並在平均時間-fno-objc-arc標誌添加到Facebook的SDK實現文件。你可以這樣做;

  1. 選擇應用目標
  2. 轉到構建階段標籤
  3. 添加的每個文件下的編譯源代碼部分。
+0

這是很多for-eaching。如果您選擇多個文件並按回車,您可以一次設置所有文件的-fno-objc-arc。 –

0

實際上,爲了使Facebook iOS sdk與ARC兼容,實際上只需要很少的更改。我在我的代碼中進行了更改,但是,我不知道將其發回給社區的指針是什麼?

這裏是一個後我做出瞭解釋如何使用ARC使用它的Xcode 4.2的簡單方法: http://nabtech.wordpress.com/2012/02/02/facebook-ios-sdk-and-arc/

+0

是否有可能給我發送你的Facebook iOS SDK的版本,我堅持了幾天的類似問題。 [email protected] – Illep

+1

我實際上找到了另一種我在這裏發佈的方式。當包含sdk時,將其包含在項目文件中,但不要選中add to target。然後在你的項目中添加sdk作爲靜態庫。這樣你就可以在沒有ARC的情況下編譯sdk,但是你的代碼沒有問題。 – nabulaer

2

新的SDK不明確支持ARC開箱即用,但有一個殼股代息構建一個可以在ARC項目中使用的靜態庫。您只要前往當地的git回購和運行

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

這將創建到/ lib/Facebook的IOS-SDK文件夾下的靜態庫(如〜/ Facebook的IOS-SDK/lib中/ Facebook的IOS-SDK )。然後,您可以將facebook-ios-sdk文件夾拖放到應用程序Xcode項目中,以包含iOS Facebook SDK靜態庫。

+0

在Facebook自己的SDK頁面上描述了支持ARC:http://developers.facebook.com/docs/mobile/ios/build/ – djskinner