Xcode / Objective-C Facebook 委托尝试

Posted

技术标签:

【中文标题】Xcode / Objective-C Facebook 委托尝试【英文标题】:Xcode / Objective-C Facebook Delegate Attempt 【发布时间】:2012-03-24 05:16:06 【问题描述】:

我试图通过使用 Facebook SDK 了解委托的工作方式。

我有这个作为我的视图控制器:

#import <UIKit/UIKit.h>
#import "FBConnect.h"
#import "FacebookClass.h"

@interface ViewController : UIViewController

@property (nonatomic, retain) Facebook *facebook;

- (IBAction)btnPress:(id)sender;

@end

#import "ViewController.h"

@implementation ViewController

@synthesize facebook;

- (void)viewDidLoad

    [super viewDidLoad];
    FacebookClass *delegate = [[FacebookClass alloc] init];

    facebook = [[Facebook alloc] initWithAppId:@"228051460617035" andDelegate:delegate];

    // Do any additional setup after loading the view, typically from a nib.


- (IBAction)btnPress:(id)sender 
    [facebook authorize:nil];


- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 
    return [self.facebook handleOpenURL:url];


...and other default viewcontroller methods

然后在我的 FacebookClass 中……我想用作代表……我有:

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

#import "FBConnect.h"

@interface FacebookClass : NSObject
<UIApplicationDelegate, FBSessionDelegate>

@end
#import "FacebookClass.h"

@implementation FacebookClass

- (void)fbDidLogin 
    NSLog(@"Logged in");


- (void)fbDidExtendToken:(NSString*)accessToken
               expiresAt:(NSDate*)expiresAt 

    NSLog(@"Extended it");


- (void)fbDidNotLogin:(BOOL)cancelled

    NSLog(@"Did not login");



- (void)fbDidLogout

    NSLog(@"Logged out");



- (void)fbSessionInvalidated

    NSLog(@"Session not valid");



@end

所以我想要发生的是当我登录时,我希望它在控制台中记录字符串“Logged in”。到目前为止,它没有。显然,我很困惑。

更新: 添加了委托实例化。

【问题讨论】:

【参考方案1】:

您的对象 FBDelegate 为零。它永远不会被实例化。你应该在你的

- (void)viewDidLoad

它正在做的方法实例:

FBDelegate = [[FacebookClass alloc] init];

【讨论】:

等等,什么?你的第一句话很好,但你的代码没有意义。 您应该将实例化委托声明为类属性。

以上是关于Xcode / Objective-C Facebook 委托尝试的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 Objective-C 类别警告

如何在Objective-C中加载数据期间异步加载JSON数据并填充UITableView

xcode 7.2 无法构建 Objective-C 模块

xcode >= 8 无法编译我的 Objective-C 库

XCode 6.3 在抛出 Objective-C++ 异常时立即引发 SIGABRT

Xcode:声明它抱怨的私有@property(Objective-C)