2016-01-10 5 views
0

У меня есть класс OauthObject с одноплодной (файл .m):Почему я получаю ноль от объекта singleton?

+ (OauthObject*) sharedManager{ 

    static OauthObject* manager = nil; 

    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     manager = [[OauthObject alloc] init]; 
    }); 

    return manager; 
} 
@end 

Существует property в .h файл:

@property (strong, nonatomic) NSString *access_token; 

В этом классе я установил переменную access_token в @"1234567"

На другой файл TableViewControler.m Я импортирую OauthObject:

#import "OauthObject.h"

Ниже в методе я пытаюсь получить значение access_token вроде как:

[[OauthObject sharedManager] access_token]; // It should be 1234567

Но я получаю nil

Я поставил access_tokes как:

NSString *accessToken = [[OauthObject sharedManager] access_token]; 
accessToken = [responseObject objectForKey:@"access_token"]; 
+0

ну, а не ваш синглтон ничтожный, но ваша собственность, которая не имеет ничего общего с фактом одиночной игры. * где * вы присваиваете что-либо «access_token»? – luk2302

+0

Вы отлаживали вообще? Какую дополнительную информацию вы узнали? – Wain

+0

Как вы установили access_token? Можете ли вы добавить код, в котором вы устанавливаете это значение? –

ответ

1

Вы должны установить access_token так:

[OauthObject sharedManager].access_token = [responseObject objectForKey:@"access_token"] 

или

[[OauthObject sharedManager] setAccess_token:[responseObject objectForKey:@"access_token"]] 

В вашем вопросе, вы пробовали, как это:

NSString *accessToken = [[OauthObject sharedManager] access_token]; 
accessToken = [responseObject objectForKey:@"access_token"]; 

В первой строке, вы назначили access_token из [OauthObject sharedManager] к переменной accessToken. Но во второй строке вы просто изменяете значение переменной вместо свойства в экземпляре OauthObject.

Смежные вопросы