【发布时间】:2012-03-19 22:30:15
【问题描述】:
我正在尝试将 facebook ios SDK 集成到我使用 ARC 的项目中。正如facebook developer documentation 中所建议的,建议将 facebook SDK 构建为此类集成的静态库。我运行提供的脚本来构建静态库,然后通过以下方式添加到我的项目中:
-
直接拖拽输出目录lib的所有内容: lib\facebook-ios-sdk(包含 lib 和相关的标头)
-
在我的目标项目的库链接二进制文件/构建阶段部分,我明确添加了我的静态库
我有一个实现 FBSessionDelegate 的所有方法的类。但是,对于这个委托的每个方法,我都有一些警告,这些方法没有被编译器实现:
Semantic Issue
Method in protocol not implemented
Required for direct or indirect protocol 'FBSessionDelegate'
相关的方法是那些:
- (void)fbDidLogin;
- (void)fbDidNotLogin:(BOOL)cancelled;
- (void)fbDidExtendToken:(NSString*)accessToken
expiresAt:(NSDate*)expiresAt;
- (void)fbDidLogout;
- (void)fbSessionInvalidated;
我真的不明白为什么编译器会给我这些警告:-\ 有没有人知道我们为什么会有这样的行为?我在this blog 中看到他们将整个 facebook-ios-sdk 添加到项目中,但理想情况下我只想添加 lib 而不是完整的项目。
任何澄清/帮助将不胜感激!
[编辑] 只需按照此页面的教程来测试与 facbook here 上的应用程序的连接,就可以轻松地重现我提到的问题。在下面我已经实现了 fDidLogin 方法,但我仍然有这个方法的警告......
我的头文件看起来像:
#import <UIKit/UIKit.h>
#import "FBConnect.h"
@class SCLViewController;
@interface SCLAppDelegate : UIResponder <UIApplicationDelegate, FBSessionDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) SCLViewController *viewController;
@property (strong, nonatomic) Facebook *facebook;
@end
和.m:
#import "SCLAppDelegate.h"
#import "SCLViewController.h"
@implementation SCLAppDelegate
@synthesize window = _window;
@synthesize viewController = _viewController;
@synthesize facebook = _facebook;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
_facebook = [[Facebook alloc] initWithAppId:@"MY-APP-ID" andDelegate:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
_facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
_facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
if (![_facebook isSessionValid]) {
[_facebook authorize:nil];
}
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[SCLViewController alloc] initWithNibName:@"SCLViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [_facebook handleOpenURL:url];
}
- (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[_facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[_facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
@end
【问题讨论】:
-
带来完整的 facebook ios sdk 的同样问题...
标签: ios facebook automatic-ref-counting static-libraries