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

本文共 1041 字,大约阅读时间需要 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()          // 初始化处理          returninstance        }()}

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

 

 

欢迎关注关东升新浪微博@tony_关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
 

更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:

智捷课堂论坛网站:

 

 

 

你可能感兴趣的文章
被神话的大数据——从大数据(big data)到深度数据(deep data)思维转变
查看>>
强制缓存和协商缓存有什么区别
查看>>
Python爬虫--- 1.4 正则表达式:re库
查看>>
我们来说一说TCP神奇的40ms
查看>>
修改校准申请遇到的问题
查看>>
【DL-CV】浅谈GoogLeNet(咕咕net)
查看>>
python大佬养成计划----win下对数据库的操作
查看>>
Mysql 中创建索引和索引的使用问题
查看>>
(cons '(〇 . 前言) 《为自己写本-Guile-书》)
查看>>
docker学习系列13 实现 基于pxc 的mysql 多节点主主同步 ...
查看>>
使用rekit脚手架创建react项目
查看>>
监控软件zabbix之安装
查看>>
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7 armv7s)
查看>>
Exchange Server 2016 独立部署/共存部署 (七)—— DAG功能测试
查看>>
Linq==数据访问层?
查看>>
python 多线程笔记(1)-- 概念
查看>>
对RTMP视频流进行BitmapData.draw()出错的解决办法
查看>>
输出select日期
查看>>
Linux 进程中 Stop, Park, Freeze【转】
查看>>
linux下异步IO的简单例子【转】
查看>>