UI18_单例
来源:互联网 发布:头戴耳机推荐 知乎 编辑:程序博客网 时间:2024/06/11 13:13
1.假如我用单例创建数据库对象,当我用数据里面的方法时必须用也只能用单例 来调用这个方法,保证其唯一性.而且它存在整个过程.存在在内存管理的全局 库,但是沙盒创建的特点是无规律的,我们每次的创建及寻找数据是很困难的. 而单例结解决这个问题2.单例是你创建在哪个文件中它就整个过程都存在那个文件中而且是唯一存在 的.3.我们创建对象有很多种.单例也是创建对象的一种,只是它特殊在它的唯一性, 我们可以将单例应用在用户是否登录的情况下等等4.一旦它被设值了,那么在任何文件里他都是那个值.
创建单例
1.在.h文件中 单例返回一个对象+ (Singleton *)shareSingleton; 再建立一个属性用于单例调用设值时用@property (nonatomic, copy)NSString *str;2.在.m文件中+ (Singleton *)shareSingleton{ 第一种 static Singleton *single; if (single == nil) { single =[[Singleton alloc] init]; } 第二种 通过oneToken是否执行过一次 保证当前这个对象只能被创建一次 static Singleton *single; static dispatch_once_t oneToken; dispatch_once(&oneToken,^{ single = [[Singleton alloc] init]; }); return single;}3.在其他文件中使用单例对象 [Singleton shareSingleton].str = @"你好"; NSLog(@"%@",[Singleton shareSingleton].str);
单例总结
1.下面都是用单例对象进行创建的 [UIScreen mainScreen]; [NSFileManager defaultManager]; [NSUserDefaults standardUserDefaults]; [NSBundle mainBundle];2.系统为了确保某些对象在工程里唯一,使用单例创建对象,比如上面四个.3.单例方法一般都是+号方法,返回值当前类型的对象,方法一般以一些关键字开 头,比如share,main,default,然后加上类名,基本上就是一个单例的方法4.保存用户名的状态从头到尾的监视.
摘抄部分:
static MyClass *class = nil;@implementation MyClass+(MyClass *)sharedMyClass{ if (!class) { [[self alloc] init]; } returnclass;}@end调试发现MyClass *A = [[MyClass alloc] init];NSLog(@"A:%@",A);MyClass *B = [MyClass sharedMyClass];NSLog(@"B:%@",B);打印出的是A:<MyClass: 0x6c72d30>B:<MyClass: 0x6a87e60>不是一个内存地址,也就是不是同一个实体
0 0
- UI18_单例
- UI18_数据持久化
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- webapp调试技巧,页面自刷新,远程调试
- 迎接挑战
- 在需求分析中就可以避免的那些错误8
- git cherry-pick 时遇到 cannot merge binary files问题解决办法
- 机器学习算法面试—口述(5):回归
- UI18_单例
- HashMap 和ConcurrentHashMap
- unity Kinect v2 with MS-SDK20绿屏抠像shader修改 透明背景
- iOS沙盒路径的查看和使用
- ubuntu12.04向MATLAB/R2014b/toolbox里添加工具箱
- linux内核架构-中断处理机制
- ARP攻击实战之WinArpAttacker
- Win+R+快捷键
- oc 翻译到cocos2dx 过程中的知识点