我在编译Facebook SDK 3.0附带的HelloFacebookSample应用时遇到了问题。
首先,我应该说我使用的是Xcode 4.0.2,iOS SDK 4.3和OS X 10.6.8。 (我很难找到一种方法来下载Xcode 4.2而不升级到Lion或Mountain Lion,我不愿意这样做。)
当我尝试构建示例项目时,出现以下构建错误:
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整合到我的应用程序中!
答案 0 :(得分: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中的Frameworks组中删除了框架。
4)我忘了在原帖中说:关键字strong
未知,所以我将其宏视为文件顶部的retain
FacebookSDK / FacebookSDK.h < / strong>如下:
#define strong retain
现在HelloFacebookSample应用程序编译时没有错误或警告,并且工作正常。与Facebook的所有互动都有效。
希望这有助于将来的其他人!如果有帮助,请将其投票!
答案 1 :(得分:0)
我不是专家,但我会尽我所能。
第一个错误是因为你使用@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?
如果我找到了什么,我会告诉你的。