iOS:单例返回空

标签 ios singleton

我有一个单例,我将数据传递给它,但它返回 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/

相关文章:

Winforms:在整个应用程序中访问类属性

ios - Pod 安装了 Alamofire 4.4,但是 Xcode 8.3 没有自动完成类

iOS 表格消失

ios - 如何按 "created_time"对我的照片 NSMutable 数组中的图像进行排序,并让我的收藏 View 相应地显示它们?

android - 指令 'monitor-enter v1' 期间出现空指针异常

ios - 使用 Objective-C/Swift 单例模型,为什么我们要创建一个共享实例而不只是使用类方法?

ios - 在Photos.app崩溃中检索相册的名称(ALAssetsGroup)

ios - swift 3 : popToViewController not working

java - Singleton的2种实现

ios - 我如何将这个 Swift 3 Singleton 用作我的 IOS 项目的全局计时器?