2012-03-13 3 views
2

나는 논리 문제가 있습니다. 다른 클래스의 객체 인스턴스에 액세스해야합니다.언제든지 다른보기 컨트롤러에서 생성 된 개체에 액세스하기

나는 FacebookController이라는 클래스가 있습니다. 여기에는 여러 개의 대리자 메서드가 있습니다 (예 : fbDidLogin). 먼저 facebookloginButtonClicked 메서드는 사용자가 버튼을 클릭 할 때 실행되고 내부 처리가 완료되면 fbDidLogin 메서드가 호출되어 사용자가 응용 프로그램에 로그인합니다. (이 모든 것은 완벽하게 작동합니다).

이제 애플리케이션에서 로그 아웃해야합니다. logout이라는 대리자 메서드가 있는데이 메서드를 [facebook logout]이라고 부릅니다.

-(void) logoutFacebook이라는 메서드를 추가했습니다. 사용자가 로그 아웃 버튼을 클릭하면 다음과 같은 메서드가 호출됩니다. 로그 아웃 방법은 다음과 같습니다. 내가 로그 아웃 같은의 ViewController에서 을 (logoutFacebook 메서드를 호출 할) 경우

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

로그 아웃에만 작동합니다. 예를 들어

내가 Student라는 클래스에서 오전 경우

, 나는 FacebookControllerlogoutFacebook 메소드를 호출하는 것을 시도하고있다. 나의 접근 방식은 다음과 같다. 이렇게함으로써, FacebookController의 새 인스턴스를 만들 것이기 ​​때문에

FacebookController *facebookController = [[FacebookController alloc]]init; 

[facebookController logoutFacebook]; 

이 작동하지 않습니다. 그래서 나는 FacebookController (로그인 후 생성 된)에 있던 원래 facebook 객체에 어떻게 든 접근해야합니다. 이 객체에 액세스하려면 어떻게해야합니까?

코드 다음 .H 파일의

+ (FacebookController *) sharedInstance 

구현에 다음 함수를 추가 @implementation 위

static FacebookController* Object; 

을이 코드를 추가

-(void)facebookloginButtonClicked:(id)sender{ 
facebook = [[Facebook alloc] initWithAppId:@"3232232" 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)fbDidLogin { 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[ facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[ facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 

    } 

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

답변

5

FacebookController.m 클래스 위의 .m 파일의 함수

+ (FacebookController *) sharedInstance 
{ 
if(Object == nil) 
{ 
Object = [[FacebookController alloc]]init; 
} 

return Object; 

} 

는 이제 지금 당신은 단지 앱의 전체 lifetime..This에서 FacebookController 클래스의 인스턴스를해야합니다이

[FacebookController sharedInstance]; 

처럼 ..use 페이스 북의 객체를 사용하여 원하는 목적지 싱글이라고 패턴 .. 당신은 그것에 대한 자세한 내용은 Google을 찾을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 그것을 google 할 것이다. 추천하는 튜토리얼이 있습니까? – shajem

관련 문제