我在编译Facebook SDK 3.0随附的HelloFacebookSample应用程序时遇到问题。

首先,我应该说我正在使用Xcode 4.0.2,iOS SDK 4.3和OS X 10.6.8。 (我正在努力寻找一种无需升级到Lion或Mountain Lion即可下载Xcode 4.2的方法,我不愿意这样做。)

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

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
}


我可以“解决”这些问题(不确定是否可以正确解决),但是随后出现以下链接错误:


  找不到框架帐户
  
  命令/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang失败,退出代码为1


有人可以帮我吗?如果我什至无法构建示例项目,那么将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)找不到框架帐户;事实证明它不是必需的,所以我只是从项目导航器的“框架”组中删除了该框架。

4)我忘了在原始帖子中说:关键字strong是未知的,因此我将它宏化为retain在文件FacebookSDK / FacebookSDK.h的顶部,如下所示:

#define strong retain


现在,HelloFacebookSample应用程序可以编译,没有错误或警告,并且可以正常运行。与Facebook的所有互动均有效。

希望这对以后的人有所帮助!如果有帮助,请投票!

10-06 02:55