Facebook SDK 3.0 HelloFacebookSample生成错误

我无法编译Facebook SDK 3.0附带的HelloFacebookSample应用程序。

首先,我应该说我正在使用Xcode 4.0.2,iOS SDK 4.3和OS X 10.6.8。 (我正在努力find一种方式来下载Xcode 4.2,而不升级到狮子或山狮,我不愿意这样做。)

当我尝试构build示例项目时,出现以下构build错误:

1)程序中出现意外的“@”

int main(int argc, char *argv[]) { @autoreleasepool { // error on this line return UIApplicationMain(argc, argv, nil, NSStringFromClass([HFAppDelegate class])); } } 

2)预期的标识符

 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { // attempt to extract a token from the url return [FBSession.activeSession handleOpenURL:url]; // error on this line } - (void)applicationWillTerminate:(UIApplication *)application { // FBSample logic // if the app is going away, we close the session object [FBSession.activeSession close]; // error on this line } 

我可以“解决”这些问题(不知道如果我解决他们正确),但然后我得到以下链接错误:

未find框架帐户

Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang失败,退出代码1

任何人都可以帮我吗? 如果我甚至无法构build示例项目,我将不会有太多的运气将Facebook集成到我的应用程序!

我解决了所有的问题。 看来这个示例并不是立即与iOS 4.3或Xcode 4.0.2兼容。 以下是我所做的:

1)在程序中意外的@ 更改为以下内容:

 int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [NSAutoreleasePool new]; return UIApplicationMain(argc, argv, nil, NSStringFromClass([HFAppDelegate class])); } 

2)预期的标识符; 更换

  return [FBSession.activeSession handleOpenURL:url]; // error on this line ... [FBSession.activeSession close]; // error on this line 

  return [[FBSession activeSession] handleOpenURL:url]; ... [[FBSession activeSession] close]; 

3)未find框架帐户; 事实certificate这不是必需的,所以我刚从Project Navigator中的Frameworks组中删除了框架。

4)我忘了在我原来的post中说:关键字strong是未知的,所以我把它作为retain在文件FacebookSDK / FacebookSDK.h的顶部,如下所示:

 #define strong retain 

现在,HelloFacebookSample应用程序编译时没有任何错误或警告,它工作正常。 所有与Facebook的互动工作。

希望这将有助于未来的其他人! 如果它可以帮助你,请投票!

我不是专家,但我会尽我所能。

第一个错误是因为你使用@autoreleasepool 。 我认为这是相当新的自动释放池的语法。 之前是这样的:

 NSAutoreleasePool *pool; pool = [[NSAutoreleasePool alloc] init]; NSString *string; string = [[[NSString alloc] init] autorelease]; // NSString or any other allocated objects // With autorelease tag /* use the string */ [pool drain]; 

您应该查看X-code 4.0.2和iOS SDK的项目,以查找主函数是如何存在的。

我正在看另一个错误,我相信这跟你使用的iOS SDK有关。 是不是只能更新SDK? 不更新xcode?

如果我能find什么,我会告诉你的