嗨,我知道这不是一个新问题,但我在这里读了很多,没有什么能帮助我找到问题。
我有一个单独的类UserFunctions
@interface UserFunctions : NSObject {
NSUserDefaults *NSUser;
/*
NSString *name;
NSString *email;
*/
}
+ (UserFunctions *)sharedInstance ;
@property (nonatomic,assign) NSString *name;
@property (nonatomic,assign) NSString *email;
在m班上:
@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"];
self.name=@"Test";
}
return self;
}
在另一个班级我尝试保存
UserFunction = [UserFunctions sharedInstance]; UserFunction.name = userjson.username; UserFunction.email = userjson.email;
如果我直接尝试阅读:
NSString *test = [UserFunction email];
我在字符串中得到nil。
我错了什么?
答案 0 :(得分:1)
你不应该为对象使用assign
属性(除非你"在其他地方保留"该对象)
@property (nonatomic,assign) NSString *name;
@property (nonatomic,assign) NSString *email;
应该是:(如果你正在使用ARC)
@property (nonatomic,strong) NSString *name;
@property (nonatomic,strong) NSString *email;
在旁注中,有一件事让我在阅读你的代码时感到不安:你绝对不应该有一个名为NSUser
的iVar,它看起来很像一个类名,它在阅读你的代码时会受到阻碍: )