GCD单利传值
来源:互联网 发布:电脑绘图软件 编辑:程序博客网 时间:2024/06/06 12:31
//// SharedInstance.h//// Created by yy on 2016/12/12.// Copyright © 2016年 zg. All rights reserved.//#import <Foundation/Foundation.h>@interface SharedInstance : NSObject/* ��参考:https:www.cnblogs.com/MasterPeng/p/5000516.html 就我本身理解而言,我认为的单例:单例在整个工程中,就相当于一个全局变量,就是不论在哪里需要用到这个类的实例变量,都可以通过单例方法来取得,而且一旦你创建了一个单例类,不论你在多少个界面中初始化调用了这个单例方法取得对象,它们所有的对象都是指向的同一块内存存储空间(即单例类保证了该类的实力对象是唯一存在的一个). “单例模式”是我们在iOS中最常使用的设计模式之一。单例模式不需要传递任何参数,就有效地解决了不同代码间的数据共享问题。单例类是一个非常重要的概念,因为它们表现出了一种十分有用的设计模式。单例类的应用贯穿于整个iOS的SDK中。例如,UIApplication类有一个方法叫sharedApplication,从任何地方调用这个方法,都将返回与当前正在运行的应用程序相关联的UIApplication实例。除了这个,NSNotificationCenter(消息中心) 、NSFileManager(文件管理) 、 NSUserDefaults(持久化存储数据) 、NSURLCache(请求缓存)、NSHTTPCookieStorage(应用程序cookies池)都是系统单例; 单例类保证了应用程序的生命周期中有且仅有一个该类的实例对象,而且易于外界访问。 单例模式的优点: 1.实例控制:Singleton 会阻止其他对象实例化其自己的 Singleton 对象的副本,从而确保所有对象都访问唯一实例。 2.灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程。 */+(SharedInstance*)sharedManager;@property(nonatomic,copy)NSString * name;@end
//// SharedInstance.m//// Created by yy on 2016/12/12.// Copyright © 2016年 zg. All rights reserved.//#import "SharedInstance.h"@implementation SharedInstance+(SharedInstance*)sharedManager{ //onceToken是GCD用来记录是否执行过,如果已经执行过就不再执行(保证执行一次) //一定注意dispatch_once_t变量必须是静态,它的值用于判断是否已经执行一次。 //第二句和dispatch_once是固定用法,这样可以实现block内的代码一次性执行,也就是说只有第一次调用这个方法时才会实例化类,之后都是返回指针指向的值。 static SharedInstance * sharedManager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedManager = [[SharedInstance alloc] init]; }); return sharedManager;}@end
//// ViewController.m// -//#import "ViewController.h"#import "SharedInstance.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // 存值 [SharedInstance sharedManager].name = @"name"; NSLog(@"%p",[SharedInstance sharedManager]);// 内存地址 UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setTitle:@"name = ?" forState:UIControlStateNormal]; button.backgroundColor = [UIColor lightGrayColor]; button.frame = CGRectMake(100, 100, 100, 30); [button addTarget:self action:@selector(readName) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button];}- (void)readName { NSLog(@"%p",[SharedInstance sharedManager]);// 和上面的同一内存地址 NSLog(@"%@",[SharedInstance sharedManager].name);}@end
阅读全文
0 0
- GCD单利传值
- 单利
- 单利
- 单利模式
- c++ 单利
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- java基础---异常
- jquery—表单验证
- 主键,外键学习
- 毒鸡汤
- python内置HTTP服务器(SimpleHTTPServer)
- GCD单利传值
- AWT的布局管理器(只有例子)
- Faster-rcnn中的问题解惑
- Hadoop-2.5.0-cdh-5.3.6搭建手册
- Boosting 简介--A (small) introduction to Boosting
- kaggle titanic 机器学习流程 top30%
- chrome拦截window.open弹窗问题的两种解决方式
- Redis在windows下安装过程
- mock.js模拟数据