Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在静态库(facebook ios sdk)中使用协议定义时出现协议不完整警告_Ios_Facebook_Automatic Ref Counting_Static Libraries - Fatal编程技术网

在静态库(facebook ios sdk)中使用协议定义时出现协议不完整警告

在静态库(facebook ios sdk)中使用协议定义时出现协议不完整警告,ios,facebook,automatic-ref-counting,static-libraries,Ios,Facebook,Automatic Ref Counting,Static Libraries,我正在尝试将facebook ios SDK集成到使用ARC的项目中。正如中所建议的,建议将facebook SDK构建为此类集成的静态库。我运行提供的脚本来构建静态库,然后通过以下方式添加到我的项目中: 直接拖动输出目录库的所有内容: lib\facebook ios sdk(包含lib和相关头) 在我的目标项目的linkbinarieswithlibraries/buildphases部分中,我明确地添加了静态库 我有一个类正在实现FBSessionDelegate的所有方法。但是,对于

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

  • 直接拖动输出目录库的所有内容: lib\facebook ios sdk(包含lib和相关头)

  • 在我的目标项目的linkbinarieswithlibraries/buildphases部分中,我明确地添加了静态库

  • 我有一个类正在实现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;
    
    我真的不明白为什么编译器会给我这些警告:-\n有人知道我们为什么会有这样的行为吗?我看到他们将整个facebook ios sdk添加到项目中,但理想情况下我只想添加lib,而不是完整的项目

    如有任何澄清/帮助,将不胜感激

    [编辑] 我提到的问题可以很容易地通过简单地跟随本页的教程来测试与facbook上的应用程序的连接来重现。在下文中,我已经实现了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
    

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

    带上完整的facebook ios sdk时也会遇到同样的问题…我已经实现了fbDidLogin方法,但我没有实现此协议的其他方法,这一事实甚至会导致一些警告FBD登录。我通过简单地添加空方法来解决警告。谢谢
    #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