2011-12-07 48 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