Xcode/Objective-C Facebook委派尝试
我试图通过使用Facebook SDK来了解代理是如何工作的 我将此作为我的视图控制器:Xcode/Objective-C Facebook委派尝试,objective-c,xcode,delegates,facebook-ios-sdk,Objective C,Xcode,Delegates,Facebook Ios Sdk,我试图通过使用Facebook SDK来了解代理是如何工作的 我将此作为我的视图控制器: #import <UIKit/UIKit.h> #import "FBConnect.h" #import "FacebookClass.h" @interface ViewController : UIViewController @property (nonatomic, retain) Facebook *facebook; - (IBAction)btnPress:(id)send
#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
#导入
#导入“FBConnect.h”
#导入“FacebookClass.h”
@界面ViewController:UIViewController
@财产(非原子,保留)Facebook*Facebook;
-(iAction)b按:(id)发送方;
@结束
#导入“ViewController.h”
@实现视图控制器
@综合facebook;
-(无效)viewDidLoad
{
[超级视图下载];
FacebookClass*委托=[[FacebookClass alloc]init];
facebook=[[facebook alloc]initWithAppId:@“228051460617035”和delegate:delegate];
//加载视图后,通常从nib执行任何其他设置。
}
-(iAction)b按:(id)发送方{
[facebook授权:无];
}
-(BOOL)应用程序:(UIApplication*)应用程序handleOpenURL:(NSURL*)url{
return[self.facebook handleOpenURL:url];
}
…和其他默认的viewcontroller方法
然后在我的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
#导入
#进口
#导入“FBConnect.h”
@接口FacebookClass:NSObject
@结束
#导入“FacebookClass.h”
@FacebookClass的实现
-(无效)FBD登录{
NSLog(@“已登录”);
}
-(void)fbDidExtendToken:(NSString*)accessToken
到期日期:(NSDate*)到期日期{
NSLog(“扩展it”);
}
-(无效)fbDidNotLogin:(BOOL)已取消
{
NSLog(@“未登录”);
}
-(无效)退出
{
NSLog(@“注销”);
}
-(无效)FBSessionInValidate
{
NSLog(@“会话无效”);
}
@结束
因此,我希望在登录时,我希望它在控制台中记录字符串“Logged in”。到目前为止,还没有。显然,我很困惑
更新:
添加了委托实例化。您的对象FBDelegate为零。它从未被引用过。你应该在你的房间里
- (void)viewDidLoad
方法实例执行以下操作:
FBDelegate = [[FacebookClass alloc] init];
等等,什么?您的第一句话很好,但您的代码毫无意义。您应该将实例委托声明为类属性。