gpt4 book ai didi

ios - 使用静态库中定义的协议(protocol)时的不完整协议(protocol)警告 (facebook-ios-sdk)

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:16:25 24 4
gpt4 key购买 nike

我正在尝试将 facebook ios SDK 集成到我使用 ARC 的项目中。正如 facebook developer documentation 中的建议建议将 facebook SDK 构建为此类集成的静态库。我运行提供的脚本来构建静态库,然后通过以下方式添加到我的项目中:

  1. 直接拖拽输出目录lib的所有内容:lib\facebook-ios-sdk(包含 lib 和关联的 header )

  2. 在我的目标项目的“链接二进制文件与库/构建阶段”部分中,我明确添加了我的静态库

我有一个类正在实现 FBSessionDelegate 的所有方法。但是,我对这个委托(delegate)的每个方法都有一些警告,这些方法没有被 compilo 实现:

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;

我真的不明白为什么 compilo 会给我这些警告:-\有谁知道我们为什么会有这样的行为吗?我在this blog看到过他们将整个 facebook-ios-sdk 添加到项目中,但理想情况下我只想添加库而不是整个项目。

任何澄清/帮助将不胜感激!

[编辑]我提到的问题可以很容易地重现,只需按照本页的教程测试与 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

最佳答案

在您的代码中,您指定您的接口(interface)正在实现 FBsesionDelegate 协议(protocol),但您实际上并没有通过创建协议(protocol)方法回调为其创建任何实现。如果不需要它们,只需删除实现声明或添加空方法。在任何情况下,这些警告都不会影响编译或在您的代码中产生任何问题,除非您确实需要一些 session 回调。

关于ios - 使用静态库中定义的协议(protocol)时的不完整协议(protocol)警告 (facebook-ios-sdk),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9778907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com