Facebook的SDK 3.0 HelloFacebookSample生成错误(Facebook

2019-09-22 07:06发布

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

首先,我应该说我使用的Xcode 4.0.2,iOS版SDK 4.3和OS X 10.6.8。 (我在努力寻找一种方法来下载的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的进入我的应用程序,如果我甚至无法构建样本项目!

Answer 1:

我解决了所有问题。 看来样本不立即与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)框架未找到帐户; 原来,这不是必需的,所以我只是在Project Navigator中框架组中删除的框架。

4)我忘了在我原来的职位说:关键字strong是未知的,所以我macro'd它retain在文件FacebookSDK / FacebookSDK.h的顶部,如下所示:

#define strong retain

而现在的HelloFacebookSample应用程序没有错误或警告编译和正常工作。 与Facebook的所有互动工作。

希望这可以帮助别人,将来别人! 如果它可以帮助你,请投上一票!



Answer 2:

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

第一个错误是因为使用傻冒@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代码4.0.2和您的iOS SDK发现的主要功能是如何出现。

我期待在其他错误,我相信它有话跟你正在使用iOS的SDK。 是不是有可能只更新SDK? 没有更新的Xcode?

如果我会找到的东西,我会让你知道



文章来源: Facebook SDK 3.0 HelloFacebookSample build errors