我有一个单例,我将数据传递给它,但它返回 null,你能帮我解决我的情况吗?提前致谢:)
这是我的代码
Card.h
@property (weak,nonatomic) NSString *email;
@property (weak,nonatomic) NSString *fName;
@property (weak,nonatomic) NSString *lName;
@property (weak,nonatomic) NSString *category;
+(Card *)getCard;
卡片.m
@synthesize email;
@synthesize fName;
@synthesize lName;
@synthesize category;
static csCard *instance;
+(Card *) getCard
{
@synchronized (self)
{
if(instance == nil)
{
instance = [[Card alloc]init];
}
}
return instance;
}
- (id) init{
self.email = [[NSUserDefaults standardUserDefaults]stringForKey:@"email"];
self.fName = [[NSUserDefaults standardUserDefaults]stringForKey:@"firstName"];
self.lName = [[NSUserDefaults standardUserDefaults]stringForKey:@"lastName"];
self.category = @"TestCategory";
return self;
}
这是我的测试代码,看看它是否正常工作
测试.m
Card *card = [Card getCard];
[card setEmail:self.emailField.text];
NSLog(@"%@",card.email);
但是这段代码给我(null)
最佳答案
像这样修改你的类。
Card.h
@property (strong,nonatomic) NSString *email; //Let the modal be strong property
@property (strong,nonatomic) NSString *fName;
@property (strong,nonatomic) NSString *lName;
@property (strong,nonatomic) NSString *category;
+(Card *)getCard;
卡片.m
static Card *instance;
+(Card *) getCard
{
@synchronized (self)
{
if(instance == nil)
{
instance = [[Card alloc]init];
}
}
return instance;
}
- (NSString)email{
return [[NSUserDefaults standardUserDefaults]stringForKey:@"email"];
}
- (void)setEmail:(NSString)email{
[[NSUserDefaults standardUserDefaults] setString:email forkey:@"email"];
}
不需要覆盖初始化
在你的测试课上
Card *card = [Card getCard];
[card setEmail:self.emailField.text];
NSLog(@"%@",card.email);
关于iOS:单例返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22087695/