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 委托尝试的主要内容,如果未能解决你的问题,请参考以下文章
如何在Objective-C中加载数据期间异步加载JSON数据并填充UITableView
xcode >= 8 无法编译我的 Objective-C 库