我在编译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的所有互动均有效。
希望这对以后的人有所帮助!如果有帮助,请投票!