博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS多页面传值方式之单例传值singleton
阅读量:5243 次
发布时间:2019-06-14

本文共 942 字,大约阅读时间需要 3 分钟。

// 要实现单例传值,那就必须得新建一个类做为单例

  • 提供创建该类对象的类方法(因为是要在alloc开辟内存空间后赋值)。所有在.h文件中声明该方法

+ (instancetype)defaultUIImageView;


 

  • 实现该方法
  • 前提得有一个静态全局变量来保存该类对象的指针

// 静态全局变量

static DefaultValueViewController *singleton;

// 提供方法创建单例对象

#pragma mark - defaultUIViewController

+ (instancetype)defaultUIViewController

{

    // 懒加载

    if (!singleton)

    {

        singleton = [[DefaultValueViewController alloc] init];

    }

  

    return singleton;

}

 


 

  •  堵缺口

// 1.堵缺口:避免不是调用你提供的方法创建对象,注意些保证其它方式创建的对象都是同一个

#pragma mark - allocWithZone

+ (instancetype)allocWithZone:(struct _NSZone *)zone

{

    if (!singleton)

    {

        singleton = [super allocWithZone:zone];

    }

    return singleton;

}

 


 

  • 堵缺口

// 2.堵缺口:copy方法为对象方法,因此直接返回它的指针就行

  • 注意:因为此时创建的单例不是直接继承至NSObject而是UIImageView,因此默认是遵循了<NSCopying>协议的

#pragma mark - copy

- (id)copy

{

    return self;

}

#pragma mark - Xcode


  •  三个类对比
  • 1.创建对象给一些属性赋值,并在点击屏幕时推送到下一页

  •     2.第二个页面创建的对象和上个页面地址完全一样,如果没有修改属性,将会具有是个页面的属性

    

  • 一个页面属性修改,所有页面都会一样:直接添加对象就会得到第二页所有的属性

 

转载于:https://www.cnblogs.com/pruple/p/5280539.html

你可能感兴趣的文章
letecode [38] - Count and Say
查看>>
Windows Phone开发(13):如何规范用户的输入行为 转:http://blog.csdn.net/tcjiaan/article/details/7341513...
查看>>
error LNK2019: 无法解析的外部符号 该符号在函数 中【转】http://blog.sina.com.cn/s/blog_51890fea0100l41h.html...
查看>>
怎么卸载hexo
查看>>
如何将域名部署到Tomcat中,用域名访问服务器
查看>>
stylus使用文档总结:内置方法+参数+条件+迭代+导入+继承
查看>>
08.08 web字体 :语法 兼容性写法 字体格式 工具 字体颜图标 多列布局:相关属性 伸缩盒:概念 相关属性...
查看>>
mongodb 中的Multikey Index Bounds解释$elemMatch
查看>>
字符串倒叙、英语单词整体倒叙
查看>>
Struts1和Struts2的区别和对比
查看>>
51单片机stack堆栈
查看>>
JVM-Java GC分析
查看>>
"PEP:8 expected 2 blank lines ,found 1"
查看>>
小程序解析HTML5
查看>>
MySQL 编程的6个重要的技巧
查看>>
Heap(堆)和stack(栈)有的区别是什么。
查看>>
hibernate的各个jar包的作用
查看>>
Ajax
查看>>
QRCode.js:使用 JavaScript 生成二维码
查看>>
Linux下设置和查看环境变量
查看>>