我试图"刷新" /"更新"用户成功通过身份验证后,我的应用中的共享字符串。这就是我所拥有的:
// MyAuth.h
//@interface
+ (NSString *)sharedAuthToken;
// MyAuth.m
+ (NSString *)sharedAuthToken {
static NSString *_sharedAuthToken = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedAuthToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
});
return _sharedAuthToken;
}
// AuthCtrl.m
- (void)saveOauthInfo:(NSString *)token {
[MyAuth sharedAuthToken] = token; // getting error here
}
我想更新或刷新sharedAuthToken
。我怎么能这样做?
*如果代码过于混乱或过于混乱,请告诉我。
答案 0 :(得分:2)
创建另一个类方法:
+(void) setSharedAuthToken:(NSString *) token;
将_sharedAuthToken
从sharedAuthToken
方法移至外类的范围,但仍然在 MyAuth.m
文件中<: / p>
static NSString *_sharedAuthToken;
@implementation MyAuth ...
实施新的类方法:
+(void) setSharedAuthToken:(NSString *) token {
_sharedAuthToken = token;
}
然后在您的saveOauthInfo
方法中:
[MyAuth setSharedAuthToken:token];
答案 1 :(得分:1)
你没有setter方法。
+ (NSString *)sharedAuthToken
是一个“getter”,只返回数据。
你应该设置一个@property,如果它符合你的需要,它会为你生成一个setter,或者你自己创建一个。
e.g。
+ (void)setSharedAuthToken:(NSString *)token { ... }
当然,既然你的getter将令牌存储在静态局部变量中,并且将其设置包装在dispatch_once中以使其成为单身,那么你将不得不重构所有这些。