ios/xcode/objective c:设置和获取会话变量[重复]

Posted

技术标签:

【中文标题】ios/xcode/objective c:设置和获取会话变量[重复]【英文标题】:ios/xcode/objective c: set and get session variable [duplicate] 【发布时间】:2015-05-03 12:09:00 【问题描述】:

这不应该那么难,但我无法让它工作。 ios newb 尝试按照 Ismael here 的回答在会话实例中设置用户 ID。但无法访问其他类中的用户标识值。

这是我正在使用的代码:

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);

log中出现的值为(null)

提前感谢您的任何建议。

【问题讨论】:

顺便说一句,在进行单例时,通常会使用 dispatch_once,从而产生线程安全的单例。请参阅 ***.com/q/9119042/1271826 这根本不是重复的......但仇恨者将成为仇恨者。 【参考方案1】:

您正在设置一个本地 userid 变量,而不是单例的属性。

而不是:

NSString *userid = @"...";

你想要:

session.userid = @"...";

【讨论】:

成功了。我不完全理解单例的局部变量和属性之间的区别,但我会研究一下。

以上是关于ios/xcode/objective c:设置和获取会话变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 C/C++ 设置进程优先级和 irq 进程的亲和性

定义 C 宏并将内存地址设置为用 C 和 C++ 编写的结构成员

S5PV210开发板用汇编设置栈和调用C语言

S5PV210开发板用汇编设置栈和调用C语言

S5PV210开发板用汇编设置栈和调用C语言

c_cpp 设置当前日期和时间