2014-07-27 5 views
-1

안녕하세요, 저는 이것이 새로운 질문이 아니라는 것을 알고 있습니다 만, 여기서 많은 것을 읽었고 아무 것도 나를 찾아 문제를 찾지 못했습니다.IOS 7 싱글턴 문제

나는 싱글 톤 클래스 UserFunctions는 M 클래스에

@interface UserFunctions : NSObject { 

    NSUserDefaults *NSUser; 

/* 
    NSString *name; 
    NSString *email; 
    */ 
} 


+ (UserFunctions *)sharedInstance ; 

@property (nonatomic,assign) NSString *name; 
@property (nonatomic,assign) NSString *email; 

이 : 내가

UserFunction = [UserFunctions sharedInstance]; UserFunction.name = userjson.username; UserFunction.email = userjson.email; 

을 저장하려고 또 다른 클래스에

@synthesize name; 
@synthesize email; 


+ (UserFunctions *)sharedInstance 
{ 

    static UserFunctions *sharedInstance; 
    static dispatch_once_t predicate; 
    dispatch_once(&predicate, ^{ 
     sharedInstance = [[UserFunctions alloc] init]; 
    }); 
    return sharedInstance; 


} 


-(id) init { 
    if (self = [super init]) { 
     NSUser = [NSUserDefaults standardUserDefaults]; 
     self = [NSUser objectForKey:@"UserFunctions"]; 
     [email protected]"Test"; 
    } 
    return self; 
} 

을하고 내가 직접 읽으려고하면 :

NSString *test = [UserFunction email]; 

String에서 nil을 얻습니다.

무엇이 잘못 되었나요?

+3

왜 클래스 밖에있는 함수가 아닌 싱글 톤을 만드나요? 싱글 톤을 생성하지 않는 것이 싱글 톤 관련 문제를 피하는 가장 좋은 방법입니다. – rightfold

+0

@rightfold 당신은 정말로 북한 출신입니까? –

+1

@ AndreyChernukha 물론 아닙니다. 거기에 살면이 웹 사이트에 접속하면 살해 당할거야. – rightfold

답변

1

(다른 곳에서 객체가 "유지"하지 않는 한) 당신은

@property (nonatomic,assign) NSString *name; 
@property (nonatomic,assign) NSString *email; 

이 있어야 할 객체에 대한 assign 속성을 사용하지 말아야합니다 (당신은 ARC를 사용하는 경우)에

@property (nonatomic,strong) NSString *name; 
@property (nonatomic,strong) NSString *email; 

sidenote, 귀하의 코드를 읽는 동안 저를 방해 한 한가지 : NSUser이라는 iVar가 없어야합니다. 코드를 읽을 때 클래스 이름과 매우 흡사합니다.

+0

감사합니다. 나는 당신이 말한 것과 VariableName을 바꾸는 방법을 시도합니다. –

+0

죄송합니다. 작동하지 않았습니다. 아직 null :( –

+0

이상한 :'userjson'에 데이터가 있습니까? :) – bperson