2012-11-28 2 views
4

내 앱은 Social.frameworkACAccount을 사용하여 Facebook에서 좋아하는 콘텐츠를 가져옵니다. 앱이 후속 실행시 새로운 좋아하는 것을 자동으로 가져올 수 있도록 Facebook 계정 식별자를 NSUserDefaults으로 저장합니다. 첫 번째 가져 오기가 정상적으로 작동합니다. 문제는 후속 실행시 ACAccount을 다시 인스턴스화하는 것입니다. 이것은 어떻게 든 불완전 ACAccount 객체를 반환누락 된 값/크래시를 수정하는 NSLog?

- (ACAccount *)facebookAccount { 
    if(!_facebookAccount) { 
     ACAccountStore *accountStore = [[ACAccountStore alloc] init]; 
     NSString *accountIdentifier = [[NSUserDefaults standardUserDefaults] valueForKey:SWFacebookAccountIdentifierKey]; 

     if(accountIdentifier) 
      _facebookAccount = [accountStore accountWithIdentifier:accountIdentifier]; 

    } 
    return _facebookAccount; 
} 

:이이 객체를 사용하여 종료하는 방법에서 기록됩니다

type:(null) 
identifier: B6E94A67-AF94-408F-A618-6CD4D78564DC 
accountDescription: Facebook 
username: [email protected] 
objectID: x-coredata://589C098E-F829-4284-841B-EE4A0003FF21/Account/p2 
enabledDataclasses: {(
    )} 
enableAndSyncableDataclasses: {(
    )} 
properties: { 
    fullname = "Sam Vermette"; 
    uid = 716308665; 
} 
parentAccount: (null) 
owningBundleID:(null) 

그래서 나는이처럼 보이는 facebookAccount 게터 있습니다. , 이상한 일이 있다는 것입니다 지금이 요청

에 대한 잘못된 계정 유형 :

NSInvalidArgumentException ', 이유 :'당신이 볼 수 있듯이 type 값은 내 응용 프로그램은 다음과 같은 예외를 발생하게 null입니다 내 게터에 return 앞에 NSLog(_facebookAccount)을 추가하면 type 키가 null이 아니며 내 앱이 중단되지 않습니다. 이 문제를 해결 한 NSLog는 내 코드에 문제가있는 것일 수도 있지만 정확히 무엇을 알아 내지 못하는지 알고 있습니다. 어떤 아이디어?

+0

당신이 _facebookAccount을 유지해야하고 반환 후 NSLog를 작성하는 경우가 돌아왔다,이 쓰레기 값을 표시합니다 내 계정 저장소를 할당하여이 문제를 해결했습니다. – fibnochi

+0

@fibnochi 그는 ARC를 사용하므로 보유를 사용할 수 없습니다. 실제로 샘, 일부 ivar 또는 전역 변수에 저장 한 다음 인쇄 할 수 있습니다. –

+0

facebookAccount가 강력한 속성으로 설정되어 있으므로 그대로 유지됩니다. 문제는 accountStore를 계속 유지해야한다는 것입니다. – samvermette

답변

4

ARC가 ACAccount 개체를 소유 한 계정 저장소를 자동으로 해제한다는 문제가 발생했습니다.

나는 강한 특성

@property (nonatomic, strong) ACAccountStore *accountStore; 
+0

도움이되었습니다. 위. 감사. –