2

プロジェクトに Sharekit グループを追加し、非常に多くのコンパイル済み警告を取得しました。

これは静的インスタンスであり、静的メソッドにこのオブジェクトの特定のインスタンスがないため、静的メソッドに self パラメータを渡すことは正しくありません。どうすればこれを修正できますか。

 + (void)logout
{
FBSession *fbSession; 

if(!SHKFacebookUseSessionProxy){
    fbSession = [FBSession sessionForApplication:SHKFacebookKey
                                             secret:SHKFacebookSecret
                                           delegate:self];

}else {
    fbSession = [FBSession sessionForApplication:SHKFacebookKey
                                    getSessionProxy:SHKFacebookSessionProxyURL
                                          delegate:self];
                  //delegate:[self sharedSomeProtocolDelegate]];
}

[fbSession logout];
}

どなたでもどうぞ。

ありがとう

4

2 に答える 2

1

FBSessionDelegate プロトコルに準拠する SocialManager オブジェクトを実行します。それをインスタンス化し、コードで self パラメーターの代わりに指定します。例えば:

SocialManager.h:

 @interface SocialManager : NSObject <FBSessionDelegate>
- (id) init;
/**
 * Called when the user successfully logged in.
 */
- (void)fbDidLogin;

/**
 * Called when the user dismissed the dialog without logging in.
 */
- (void)fbDidNotLogin:(BOOL)cancelled;

/**
 * Called when the user logged out.
 */
- (void)fbDidLogout;
@end

SocialManager.m:

-(id) init
{
  self = [super init];
  return self;
}
- (void)fbDidLogin;
{
}
- (void)fbDidNotLogin:(BOOL)cancelled;
{
}
- (void)fbDidLogout
{
}

そしてあなたのコードで:

 + (void)logout
{
FBSession *fbSession;
SocialManager* socialManager = [[SocialManager alloc] init];

if(!SHKFacebookUseSessionProxy){
    fbSession = [FBSession sessionForApplication:SHKFacebookKey
                                             secret:SHKFacebookSecret
                                           delegate:socialManager];

}else {
    fbSession = [FBSession sessionForApplication:SHKFacebookKey
                                    getSessionProxy:SHKFacebookSessionProxyURL
                                          delegate:socialManager];
                  //delegate:[self sharedSomeProtocolDelegate]];
}

[fbSession logout];
}

これは簡単な例ですが、コードのどこかに独自のデリゲートを実装する必要があります。オブジェクト(おそらくviewController)にプロトコルにあるメソッドを追加し、このオブジェクトをFBsessionのデリゲートとして設定するだけです。

于 2012-09-19T19:41:22.177 に答える