使用Facebook的官方iOS教程注销

时间:2012-02-13 05:31:20

标签: iphone facebook logout

我正在关注Facebook的iOS tutorial for logging out

我将教程的代码添加到我的委托.m文件中。跑吧,当我点击退出按钮时,它崩溃了。我不知道错误是什么意思。日志窗口显示:

  

[S3DEngine_AppDelegate logoutButtonClicked]:无法识别的选择器发送到实例0xb011dd0

我正在使用iPhone模拟器5.0,XCode 4.2。 本教程的不同之处在于我没有使用applicationDidFinishLauchingWithOptions:。我也尝试过这个功能,但是同样的错误。

感谢您的帮助

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{
    // Facebook
    // Add the logout button
    UIButton *logoutButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    logoutButton.frame = CGRectMake(40, 40, 200, 40);
    [logoutButton setTitle:@"Log Out" forState:UIControlStateNormal];
    [logoutButton addTarget:self action:@selector(logoutButtonClicked)
           forControlEvents:UIControlEventTouchUpInside];   
    [self.viewController.view addSubview:logoutButton];


    // Disable idle timer
    //
    [application setIdleTimerDisabled:YES] ;

    // Configure and start the accelerometer
    //
    [[UIAccelerometer sharedAccelerometer] setUpdateInterval:kAccelerometerFrequency] ;
    [[UIAccelerometer sharedAccelerometer] setDelegate:self] ;

    // Create the view controller
    //
    [window addSubview:viewController.glView];
    [window makeKeyAndVisible];

    // Configure and start animation
    //
    viewController.glView.iAnimationInterval = kAnimationFrequency ;
    [viewController.glView startAnimation];       

    // Configure ans start slpash view
    //
    CGRect frame = [[UIScreen mainScreen] bounds];
    splashView = [[UIImageView alloc] initWithFrame:frame];
    splashView.image = [UIImage imageNamed: @"Default.png"];
    [window addSubview:splashView];
    [window bringSubviewToFront:splashView];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:window cache:YES];
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)];
    splashView.alpha = 0.0;
    [UIView commitAnimations];

    // Play default movie if any
    //
    [viewController.glView playDefaultMovieIfAny];

    facebook = [[Facebook alloc] initWithAppId:@"105441111111111" 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];
    }

}

- (void) logoutButtonClicked:(id)sender 
{
    [facebook logout];
}

- (void) fbDidLogout 
{
    // Remove saved authorization information if it exists
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"]) {
        [defaults removeObjectForKey:@"FBAccessTokenKey"];
        [defaults removeObjectForKey:@"FBExpirationDateKey"];
        [defaults synchronize];
    }
}

2 个答案:

答案 0 :(得分:2)

这样做......

[logoutButton addTarget:self action:@selector(logoutButtonClicked:)
           forControlEvents:UIControlEventTouchUpInside];

OR

- (void) logoutButtonClicked
{
    [facebook logout];
}

答案 1 :(得分:0)

如果你想在logoutButtonClicked函数中保留(id)sender参数,选择器函数“logoutButtonClicked”需要在它后面加一个分号,如下所示:

[logoutButton addTarget:self action:@selector(logoutButtonClicked:)

关于此主题的其他阅读可在选择器的Apples文档中找到: http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocSelectors.html