我正在尝试实施facebook登录并注销。在其中一个步骤(https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/)中,它需要一个私有方法“sessionStateChanged:”才能准确。我试图这样做,但由于某种原因我收到错误“类型名称需要说明符或限定符”。显然我错过了一些东西。如果有人可以指出,这将是伟大的! 这就是我想要实现的私有方法:
- (void)sessionStateChanged:(NSNotification*)notification {
if (FBSession.activeSession.isOpen) {
[self.authButton setTitle:@"Logout" forState:UIControlStateNormal];
} else {
[self.authButton setTitle:@"Login" forState:UIControlStateNormal];
}
}
以下是我尝试实施的方法:
// AppDelegate.m
#import "AppDelegate.h"
#import <FacebookSDK/FacebookSDK.h>
#import "ViewController.h"
@interface PrivateClass
{
-(void)sessionStateChanged:(NSNotification*)notification;
}
@end
@implementation AppDelegate //implementation begins no suprises here...
.
.
.
.
//and at the end of the implementation I put the method as
- (void)sessionStateChanged:(NSNotification*)notification {
if (FBSession.activeSession.isOpen) {
[self.authButton setTitle:@"Logout" forState:UIControlStateNormal];
} else {
[self.authButton setTitle:@"Login" forState:UIControlStateNormal];
}
}
@end
感谢您花时间看我的问题。
答案 0 :(得分:1)
您需要在大括号之外声明您的方法,如下所示:
@interface PrivateClass
{
}
-(void)sessionStateChanged:(NSNotification*)notification;
@end
答案 1 :(得分:0)
私有方法就是这样,Object-C的“类别”概念:
@interface PrivateClass()
-(void)sessionStateChanged:(NSNotification*)notification;
@end
答案 2 :(得分:0)
Objective-C
根本不需要类声明来解决这个问题
只需按照您的方式实施该方法,它就会“正常工作”
出于组织的考虑,一些人(包括我自己)将在.m的顶部的类扩展中声明在.m文件之外不可见的任何方法:
@interface AppDelegate() - (无效)sessionStateChanged:(NSNotification *)通知; @end
@implementation AppDelegate ... @end
虽然您可以在Objective-C(没有超类的类)中创建新的根类,但您实际上无法创建与系统API(使用Foundation或更高版本)互操作的新根类。至少不是没有重新发明大量的基金会。