IOS swift项目的单例模式.swift5以后的单例模式

不能继承NSObject
第一种写法,最简单

class SoundTools{static let sharedInstance = SoundTools()private init() { }

第2种写法

class SoundTools{//提供全局访问点class var sharedInstance2: SoundTools {struct Static {static let inst: SoundTools = SoundTools()}return Static.inst}}

在打印地方,写一个打印地址的函数,否则print函数无法打印地址

func address<T: AnyObject>(o: T) -> String {return String.init(format: "%018p", unsafeBitCast(o, to: Int.self))}
 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {//        print(SoundTools.sharedInstance)print(address(o: SoundTools.sharedInstance))
//        print(SoundTools.sharedInstance2)print(address(o: SoundTools.sharedInstance2))print(address(o: Peson()))print("===")}

看看控制台输出

0x00006000016f0f20
0x00006000016ec170
0x00006000016ec180
===
0x00006000016f0f20
0x00006000016ec170
0x00006000016f0eb0
===

证明单例没有问题

IOS swift项目的单例模式.swift5以后的单例模式相关推荐

  1. swift 项目_如何对iOS项目进行静态分析

    随着项目的扩大,依靠人工codereview来保证项目的质量,越来越不现实,这时就有必要借助于一种自动化的代码审查工具:程序静态分析. 程序静态分析(Program Static Analysis)是 ...

  2. IOS OC项目的单例模式

    IOS OC项目的单例模式 采用GCD方式书写单例,苹果官方示例代码也是这样写的,并打印一下地址,看看比较new出来的对象的地址是否相同. 提供一个类方法,供外部访问方便. @interface Ne ...

  3. Swift项目引入第三方库的方法

     分类: iOS(55)  目录(?)[+] Swift项目引入第三方库的方法 转自 http://blog.shiqichan.com/How-To-Import-3rd-Lib-Into-Swif ...

  4. iOS开源项目周报0316

    由OpenDigg 出品的iOS开源项目周报第十二期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. GodEye ...

  5. Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课

    Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版i ...

  6. iOS开源项目周报1222

    由OpenDigg 出品的iOS开源项目周报第二期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. io ...

  7. iOS开源项目周报1229

    由OpenDigg 出品的iOS开源项目周报第三期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Ma ...

  8. iOS Swift 使用 CLLocationManager 定位

    iOS Swift 使用 CLLocationManager 定位 CLLocationManager 是IOS 系统提供的定位对象,通过该对象可以获取定位信息,包括:经纬度.海拔.方向.速度.通过反 ...

  9. OpenDigg iOS开源项目月报201704

    由OpenDigg 出品的iOS开源项目月报第一期来啦.我们的iOS开源月报集合了OpenDigg一个月来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Transi ...

最新文章

  1. 美多商城之验证码(短信验证码1)
  2. Mobile OpenCart 自适应主题模板 ABC-0074
  3. 去除0值和nan_Pandas 1.0的新功能
  4. TMG2010 之创建访问规则
  5. Choose the Right Search Solution
  6. Oracle 解决4031错误
  7. java复制类mytool_MyTools
  8. 如何判断mysql某个数据库某张表是否存在
  9. 2016校招腾讯研发岗笔试题---递归法求解格雷码
  10. [css] 如何使用css3实现一个div设置多张背景图片?
  11. java中this是实例吗_java中this用法实例
  12. vscode开发环境
  13. ios sandbox
  14. 智能胖墩机器人_我就是那个叫胖墩儿的送货机器人
  15. 2023南京大学计算机考研信息汇总
  16. python中几种括号的用法()、[]、{} 举例说明
  17. 推荐这3款图片流动特效神器,一键即可让照片“动”起来
  18. vue+cordova 实现第三方登录( QQ 微信 微博)之微博登录
  19. 炎黄盈动易鲸云低代码平台,全面助推企业数字化转型升级
  20. System services not available to Activities before onCreate()错误解决方法

热门文章

  1. C语言中三块“难啃的硬骨头”
  2. 电脑主机,晚上就煎肉,把隔壁宿舍都馋哭了!
  3. HLS中数据的合并与拆分
  4. h3c s7506e 配置手册_H3C交换机s5500Web登录配置
  5. 逆置单链表c语言程序,(数据结构C语言版)顺序表和单链表的逆置
  6. 关系式调用c语言脚本_认识LoadRunner脚本语言
  7. mysql 雇员表脚本,mysql压力测试脚本实例_MySQL
  8. php 弹窗代码大全,PHP_asp.net弹出窗口代码大全,//关闭,父窗口弹出对话框,子窗 - phpStudy...
  9. upload-labs_pass21_CTF逻辑老饶了
  10. python邮件发送csv附件_Python2.7 smtplib发送带附件邮件报错STARTTLS解决方法