zoukankan      html  css  js  c++  java
  • 让NSUserDefaults使用起来像对象一样容易

    让NSUserDefaults使用起来像对象一样容易

    巧妙的设计,是为了简化开发提升效率而存在。

    设计要点:

    1. 单例模式

    2. 重写setter,getter方法

    3. 专门的类来管理单例

    使用时候的详情:

    源码:

    SharedInstance.h 与 SharedInstance.m

    //
    //  SharedInstance.h
    //  NSUserDefault
    //
    //  Created by YouXianMing on 14/12/5.
    //  Copyright (c) 2014年 YouXianMing. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "NSUserDefaultsObject.h"
    
    /**
     *  单例管理器
     */
    @interface SharedInstance : NSObject
    
    + (NSUserDefaultsObject *)defaultsObject;
    
    @end
    //
    //  SharedInstance.m
    //  NSUserDefault
    //
    //  Created by YouXianMing on 14/12/5.
    //  Copyright (c) 2014年 YouXianMing. All rights reserved.
    //
    
    #import "SharedInstance.h"
    
    static NSUserDefaultsObject *_defaultObject = nil;
    
    @implementation SharedInstance
    
    /**
     *  构造单例的类方法
     */
    + (void)initialize {
        if (self == [SharedInstance class]) {
            _defaultObject = [NSUserDefaultsObject new];
        }
    }
    
    + (NSUserDefaultsObject *)defaultsObject {
        return _defaultObject;
    }
    
    @end

    NSUserDefaultsObject.h 与 NSUserDefaultsObject.m

    //
    //  NSUserDefaultsObject.h
    //  NSUserDefault
    //
    //  Created by YouXianMing on 14/12/5.
    //  Copyright (c) 2014年 YouXianMing. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface NSUserDefaultsObject : NSObject
    
    @property (nonatomic, strong) NSString  *name;
    
    @end
    //
    //  NSUserDefaultsObject.m
    //  NSUserDefault
    //
    //  Created by YouXianMing on 14/12/5.
    //  Copyright (c) 2014年 YouXianMing. All rights reserved.
    //
    
    #import "NSUserDefaultsObject.h"
    
    @implementation NSUserDefaultsObject
    
    #pragma mark - 重写setter,getter方法
    @synthesize name = _name;
    - (void)setName:(NSString *)name {
        [[NSUserDefaults standardUserDefaults] setValue:name forKey:@"name"];
    }
    - (NSString *)name {
        return [[NSUserDefaults standardUserDefaults] valueForKey:@"name"];
    }
    
    @end

    核心源码:

  • 相关阅读:
    SVG绘制星空效果
    httpserver实现简单的上下文
    httpserver
    多协成利用互斥锁按顺序执行读取文件
    channel补充
    获取小程序的手机号
    php 简单加密解密
    goroutine channel
    json序列化和反序列化
    golang 命令行参数
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4147668.html
Copyright © 2011-2022 走看看