博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《从零開始学Swift》学习笔记(Day 63)——Cocoa Touch设计模式及应用之单例模式...
阅读量:7098 次
发布时间:2019-06-28

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

原创文章,欢迎转载。转载请注明:关东升的博客

 

什么是设计模式。设计模式是在特定场景下对特定问题的解决方式。这些解决方式是经过重复论证和測试总结出来的。

实际上。除了软件设计,设计模式也被广泛应用于其它领域。比方UI设计和建筑设计等。

以下来介绍Cocoa Touch框架中的设计模式中的单例模式。

 

单例模式

单例模式的作用是解决“应用中仅仅有一个实例”的一类问题。在Cocoa Touch框架中,有UIApplicationNSUserDefaultsNSNotificationCenter等单例类。另外,NSFileManagerNSBundle类尽管属于Cocoa框架的内容。但也能够在Cocoa Touch框架中使用(Cocoa框架中的单例类有NSFileManagerNSWorkspaceNSApplication等)。

 

问题提出

在一个应用程序的生命周期中,有时候仅仅须要某个类的一个实例。

比如:当iOS应用程序启动时。应用的状态由UIApplication类的一个实例维护。这个实例代表了整个“应用程序对象”,它仅仅能是一个实例。其作用是共享应用程序中的一些资源、控制应用程序的訪问,以及保持应用程序的状态等。

 

解决方式

单例模式的实现有非常多方案,苹果公司在《UsingSwift with Cocoa and Objective-C》官方文档中给出了一种单例模式的实现。最简单形式代码例如以下:

class Singleton {    static let sharedInstance = Singleton()}

上述代码採用static的类属性实现单例模式。这样的类属性仅仅被延迟载入运行一次。即便是在多线程情况下也仅仅是运行一次,而且保证是线程安全的。

假设须要进行一些初始化,能够使用例如以下带有闭包形式代码:

class Singleton {    static let sharedInstance: Singleton = {          let instance = Singleton()          // 初始化处理          return instance        }()}

单例模式除了上述苹果官方给出的实现外,还有非常多种实现方式。

你可能感兴趣的文章
input checked取值
查看>>
快速幂取模(当数很大时,相乘long long也会超出的解决办法)
查看>>
EF+Code First+Database First+Model First,EF开发流程
查看>>
HttpWebRequest的常见错误使用TcpClient可避免
查看>>
报表技术
查看>>
java基础---多线程---volatile详解
查看>>
eclipse中tomcat启动成功,浏览器访问失败
查看>>
中文乱码(Python、WEB、ajax)
查看>>
mysql 开发进阶篇系列 43 逻辑备份与恢复(mysqldump 的基于时间和位置的不完全恢复)...
查看>>
Go开发之路 -- 流程控制
查看>>
bootstrap:按钮下拉菜单
查看>>
git diff命令
查看>>
LeetCode:Climbing Stairs(DP)
查看>>
STC12C5A60S2笔记7(定时器)
查看>>
[HNOI2004]宠物收养场 BZOJ1208 splay tree
查看>>
mysql超时机制
查看>>
复习java基础第一天
查看>>
程序后台服务启动,MongoDB未启动(启动较慢)/(关机重启情况下)。
查看>>
数据库系统阶段特点
查看>>
假期演练1-3
查看>>