ios/xcode/objective c:设置并获取会话变量
这应该不难,但我不能让它工作。IOS新手尝试在会话实例中根据Ismael的回答设置用户ID。但无法访问其他类中的userid值 以下是我正在使用的代码:ios/xcode/objective c:设置并获取会话变量,ios,singleton,session-variables,userid,Ios,Singleton,Session Variables,Userid,这应该不难,但我不能让它工作。IOS新手尝试在会话实例中根据Ismael的回答设置用户ID。但无法访问其他类中的userid值 以下是我正在使用的代码: Session.h @interface IDSession : NSObject @property (readonly, copy) NSString *userid; + (IDSession *)sharedInstance; @end Session.m #import "IDSession.h" @interface IDSe
Session.h
@interface IDSession : NSObject
@property (readonly, copy) NSString *userid;
+ (IDSession *)sharedInstance;
@end
Session.m
#import "IDSession.h"
@interface IDSession()
@property (readwrite,copy)NSString * userid;
@end
@implementation IDSession
+ (IDSession *)sharedInstance {
static IDSession *session;
if (!session){
session = [[IDSession alloc] init];
//include this class in other class and reference userid with [IDSession sharedInstance].userid
NSString * userid = @"1";
}
return session;
}
@end
in retrieving class.
#import "session.h"
NSString *userid =[Session sharedInstance].userid;
NSLog(@"userid retrieved from session variable is %@",userid);
日志中显示的值为(null)
提前感谢您的建议。您正在设置一个本地
用户ID
变量,而不是singleton的属性
而不是:
NSString *userid = @"...";
你想要:
session.userid = @"...";
这就成功了。我并不完全理解局部变量和singleton属性之间的区别,但我将对此进行研究。顺便说一句,在执行singleton时,通常会使用dispatch_一次,从而生成线程安全的singleton。参见stackoverflow.com/q/9119042/1271826这根本不是重复的……但仇恨者将是仇恨者。