让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

核心源码:

最新文章

  1. 重装windows7企业版时提示“安装程序无法创建新的系统分区,也无法定位现有系统
  2. 怪物彈珠Monster Strike 攻略
  3. javasE学习笔记:关键字super的使用
  4. 图像处理之face morphing
  5. sc7731 Android 5.1 LCD驱动简明笔记之一
  6. Ajax and JSON
  7. 办理滑铁卢大学(本科)学历认证『微信171922772』UW学位证成绩单使馆认证University of Waterloo
  8. 一次__libc_message的排查
  9. Java基础 -- 深入理解泛型
  10. oldboy s21day15模块装饰器及其他应用
  11. day21(1)---python的内存管理
  12. dl,dt,dd标签的使用
  13. jQuery使用(十三):工具方法
  14. spark大批量读取Hbase时出现java.lang.OutOfMemoryError: unable to create new native thread
  15. 置顶博客一览表($My~Top~List$)
  16. JMeter一次简单的接口测试(转载)
  17. httpclient的简单使用
  18. git小乌龟工具TortoiseGit记住你的账号密码
  19. Laravel 事件系统用法总结(监听事件,观察者模式)
  20. Linux查看网卡UUID另一方法

热门文章

  1. 微众api文档,身份证识别,ocr等人脸识别等
  2. idea开发环境中maven控制台乱码解决
  3. HTTP传输内容的压缩
  4. jmeter(2)——元件简介、作用域及执行顺序
  5. php实现对数组进行编码转换
  6. Centos时间查看修改命令date详解
  7. WPF TextBox 聚焦
  8. Linux学习笔记之(1)~Linux有趣的历史概览
  9. javascript bind在回调中精简匿名函数的用法
  10. Nuxt.js学习心得