Handler(单例传值)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Handler(单例传值)相关的知识,希望对你有一定的参考价值。
1 声明单例字符串类型,以copy类型
2 单例是类方法
3 返回值类型是 instancetype
4 单例不能释放
#import "Handler.h"
static Handler *handler = nil;//需要把单例创建为全局变量
@implementation Handler
+ (instancetype)shareInstance{
//加锁的意思。多线程访问会出现 alloc多次。保证创建过程在同一时间内只允许一个线程对象访问
@synchronized(self) {//任意对象
if (handler == nil) {
handler = [[Handler alloc] init];//如果是空就创建否则 不创建
}
}
return handler;
}
具体使用:
1 创建好单例类,引入单例的头文件
//初始化,创建单例
Handler *handler = [Handler shareInstance];
//把要传的值(UITextField的值) 赋值给单例内部声明的属性
handler.string = _textField.text;
2 接收要传的数值,引入单例的头文件,
//一样初始化单例
//创建单例
Handler *handler = [Handler shareInstance];
//接收单例的值,传给label
label.text = handler.string;
注意:Handler的创建时全局的变量,所以在外部可以使用,没有逐级传值的局限性,像属性和协议传值那样。优势很明显,但是handler单例传值会有内存问题,不能大量使用单例传值;
以上是关于Handler(单例传值)的主要内容,如果未能解决你的问题,请参考以下文章
属性传值,协议传值,block传值,单例传值四种界面传值方式