2012-09-11 42 views
1

我想實現Facebook登錄並註銷。在其中一個步驟中(https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/),它需要一個專門的方法「sessionStateChanged:」以確保準確。我試圖做到這一點,但出於某種原因,我收到錯誤「類型名稱需要說明符或限定符」。顯然我錯過了一些東西。如果有人能指出,那會很棒! 這就是我想實現的私有方法:私有方法在目標-C

- (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 

感謝您抽出時間來看看我的問題。

回答

1

您需要聲明的大括號像這樣的地區以外的方法:

@interface PrivateClass 
{ 
} 

-(void)sessionStateChanged:(NSNotification*)notification; 

@end 
+0

爲了說明起見,變量聲明進入括號,屬性和方法之外。希望有助於一些。 – slycrel

+0

感謝您的快速響應! – Matt

+0

@slycrel使用擴展類會更好...... – aleroot

0

私人的方法是這樣的,對象C的「類別」的概念:

@interface PrivateClass() 
    -(void)sessionStateChanged:(NSNotification*)notification; 
@end 
+0

-1爲什麼?很想知道。 – Peres

+0

我同意。爲什麼是-1? – Matt

+0

因爲這不是一個類別,所以在Objective-C中沒有私有方法(或私有類),並且它不回答OP的問題(根本不需要聲明)。 – bbum

0
  1. Objective-C中沒有私人課程或私人方法C

  2. 沒有nee d一類的聲明在所有解決這個問題

  3. 簡單地實現方法,你正在做的,它會「只是工作」

  4. 對組織的緣故,一些人(包括我自己)將宣佈任何是不是在.M的頂部的一類擴展.m文件的外部可見的方法:

    @interface AppDelegate中() - (無效)sessionStateChanged:(NSNotification *)通知; @end

    @implementation的AppDelegate ... @end

  5. ,而你可以創建在Objective-C(沒有超類)新的根類,你真的不能創建新的根與系統API(基礎或以上)互操作的類。至少不是沒有重新發明大量的基金會。